├── icons
├── min.png
├── moon.png
├── plus.png
├── sun.png
├── favicon.ico
├── offline.jpg
├── offline.png
├── plusRed.png
├── clockFace.png
├── menu
│ ├── log.png
│ ├── map.png
│ ├── agenda.png
│ ├── clock.png
│ ├── light1.png
│ ├── light2.png
│ ├── light3.png
│ ├── light4.png
│ ├── meteo.png
│ ├── pluie.png
│ ├── chauffage.png
│ └── domoticz.png
├── freeRemote.png
├── switchs
│ ├── fun.png
│ ├── mouv.png
│ ├── rock.png
│ ├── metal.png
│ ├── movie.png
│ ├── pause.png
│ ├── reggae.png
│ ├── sleep.png
│ ├── spoon.png
│ ├── baby48_On.png
│ ├── cocktail2.png
│ ├── pump48_On.png
│ ├── baby48_Off.png
│ ├── coffee48_On.png
│ ├── pump48_Off.png
│ ├── cocktail48_Off.png
│ ├── cocktail48_On.png
│ ├── coffee48_Off.png
│ ├── mailbox48_Off.png
│ ├── mailbox48_On.png
│ ├── radiateur48_On.png
│ ├── radiateur48_Off.png
│ ├── thermostat48_Off.png
│ └── thermostat48_On.png
├── meteo
│ ├── day
│ │ ├── Cle.png
│ │ ├── Clo.png
│ │ ├── Fog.png
│ │ ├── Hai.png
│ │ ├── Par.png
│ │ ├── Rai.png
│ │ ├── Sle.png
│ │ ├── Sno.png
│ │ ├── Sun.png
│ │ └── Thu.png
│ └── night
│ │ ├── Cle.png
│ │ ├── Clo.png
│ │ ├── Fog.png
│ │ ├── Hai.png
│ │ ├── Par.png
│ │ ├── Rai.png
│ │ ├── Sle.png
│ │ ├── Sno.png
│ │ ├── Sun.png
│ │ └── Thu.png
└── wallpaper
│ ├── pissanli.jpg
│ ├── romantic.jpg
│ ├── autumn_day.png
│ ├── autumn_night.jpg
│ ├── spring_day.jpg
│ ├── spring_night.jpg
│ ├── summer_day.jpg
│ ├── summer_night.jpg
│ ├── winter_day.jpg
│ └── winter_night.jpg
├── fonts
├── arimo.woff
├── arimo.woff2
├── digital.ttf
├── brankovic.ttf
├── fontawesome-webfont.woff
└── fontawesome-webfont.woff2
├── sounds
├── Bean.ogg
├── Bubble.ogg
├── Echo.ogg
├── Email.ogg
├── Pebble.ogg
├── Sprout.ogg
├── Arpeggio.ogg
├── Crystal.ogg
├── Schedule.ogg
├── Twinkle.ogg
└── Ding_Dong.ogg
├── pages
├── freeRemote.html
├── canevas.html
├── iframe.html
├── trafic.html
├── page5.html
├── logs.html
├── page4.html
├── page1.html
├── page2.html
├── page3.html
├── pluie.html
├── clock.html
└── meteo.html
├── js
├── jquery.ui.touch-punch.min.js
├── swipeSetup.js
├── jskata.nofreeze.min.js
├── mqtt.connect.js
├── full
│ ├── jskata.nofreeze.js
│ └── swipe.js
├── snow.js
├── swipe.min.js
├── frontpage_settings.js
└── frontpage_settings_exemple.js
├── css
├── trafic.css
├── iframe.css
├── logs.css
├── page1.css
├── page2.css
├── page3.css
├── pluie.css
├── page4.css
├── meteo.css
├── page5.css
├── clock.css
├── global.css
└── highcharts.css
├── README.md
└── index.html
/icons/min.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/min.png
--------------------------------------------------------------------------------
/icons/moon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/moon.png
--------------------------------------------------------------------------------
/icons/plus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/plus.png
--------------------------------------------------------------------------------
/icons/sun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/sun.png
--------------------------------------------------------------------------------
/fonts/arimo.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/fonts/arimo.woff
--------------------------------------------------------------------------------
/fonts/arimo.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/fonts/arimo.woff2
--------------------------------------------------------------------------------
/fonts/digital.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/fonts/digital.ttf
--------------------------------------------------------------------------------
/icons/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/favicon.ico
--------------------------------------------------------------------------------
/icons/offline.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/offline.jpg
--------------------------------------------------------------------------------
/icons/offline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/offline.png
--------------------------------------------------------------------------------
/icons/plusRed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/plusRed.png
--------------------------------------------------------------------------------
/sounds/Bean.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/sounds/Bean.ogg
--------------------------------------------------------------------------------
/sounds/Bubble.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/sounds/Bubble.ogg
--------------------------------------------------------------------------------
/sounds/Echo.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/sounds/Echo.ogg
--------------------------------------------------------------------------------
/sounds/Email.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/sounds/Email.ogg
--------------------------------------------------------------------------------
/sounds/Pebble.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/sounds/Pebble.ogg
--------------------------------------------------------------------------------
/sounds/Sprout.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/sounds/Sprout.ogg
--------------------------------------------------------------------------------
/fonts/brankovic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/fonts/brankovic.ttf
--------------------------------------------------------------------------------
/icons/clockFace.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/clockFace.png
--------------------------------------------------------------------------------
/icons/menu/log.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/menu/log.png
--------------------------------------------------------------------------------
/icons/menu/map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/menu/map.png
--------------------------------------------------------------------------------
/sounds/Arpeggio.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/sounds/Arpeggio.ogg
--------------------------------------------------------------------------------
/sounds/Crystal.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/sounds/Crystal.ogg
--------------------------------------------------------------------------------
/sounds/Schedule.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/sounds/Schedule.ogg
--------------------------------------------------------------------------------
/sounds/Twinkle.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/sounds/Twinkle.ogg
--------------------------------------------------------------------------------
/icons/freeRemote.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/freeRemote.png
--------------------------------------------------------------------------------
/icons/menu/agenda.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/menu/agenda.png
--------------------------------------------------------------------------------
/icons/menu/clock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/menu/clock.png
--------------------------------------------------------------------------------
/icons/menu/light1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/menu/light1.png
--------------------------------------------------------------------------------
/icons/menu/light2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/menu/light2.png
--------------------------------------------------------------------------------
/icons/menu/light3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/menu/light3.png
--------------------------------------------------------------------------------
/icons/menu/light4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/menu/light4.png
--------------------------------------------------------------------------------
/icons/menu/meteo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/menu/meteo.png
--------------------------------------------------------------------------------
/icons/menu/pluie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/menu/pluie.png
--------------------------------------------------------------------------------
/icons/switchs/fun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/fun.png
--------------------------------------------------------------------------------
/icons/switchs/mouv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/mouv.png
--------------------------------------------------------------------------------
/icons/switchs/rock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/rock.png
--------------------------------------------------------------------------------
/pages/freeRemote.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/pages/freeRemote.html
--------------------------------------------------------------------------------
/sounds/Ding_Dong.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/sounds/Ding_Dong.ogg
--------------------------------------------------------------------------------
/icons/menu/chauffage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/menu/chauffage.png
--------------------------------------------------------------------------------
/icons/menu/domoticz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/menu/domoticz.png
--------------------------------------------------------------------------------
/icons/meteo/day/Cle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/day/Cle.png
--------------------------------------------------------------------------------
/icons/meteo/day/Clo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/day/Clo.png
--------------------------------------------------------------------------------
/icons/meteo/day/Fog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/day/Fog.png
--------------------------------------------------------------------------------
/icons/meteo/day/Hai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/day/Hai.png
--------------------------------------------------------------------------------
/icons/meteo/day/Par.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/day/Par.png
--------------------------------------------------------------------------------
/icons/meteo/day/Rai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/day/Rai.png
--------------------------------------------------------------------------------
/icons/meteo/day/Sle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/day/Sle.png
--------------------------------------------------------------------------------
/icons/meteo/day/Sno.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/day/Sno.png
--------------------------------------------------------------------------------
/icons/meteo/day/Sun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/day/Sun.png
--------------------------------------------------------------------------------
/icons/meteo/day/Thu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/day/Thu.png
--------------------------------------------------------------------------------
/icons/switchs/metal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/metal.png
--------------------------------------------------------------------------------
/icons/switchs/movie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/movie.png
--------------------------------------------------------------------------------
/icons/switchs/pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/pause.png
--------------------------------------------------------------------------------
/icons/switchs/reggae.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/reggae.png
--------------------------------------------------------------------------------
/icons/switchs/sleep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/sleep.png
--------------------------------------------------------------------------------
/icons/switchs/spoon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/spoon.png
--------------------------------------------------------------------------------
/icons/meteo/night/Cle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/night/Cle.png
--------------------------------------------------------------------------------
/icons/meteo/night/Clo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/night/Clo.png
--------------------------------------------------------------------------------
/icons/meteo/night/Fog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/night/Fog.png
--------------------------------------------------------------------------------
/icons/meteo/night/Hai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/night/Hai.png
--------------------------------------------------------------------------------
/icons/meteo/night/Par.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/night/Par.png
--------------------------------------------------------------------------------
/icons/meteo/night/Rai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/night/Rai.png
--------------------------------------------------------------------------------
/icons/meteo/night/Sle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/night/Sle.png
--------------------------------------------------------------------------------
/icons/meteo/night/Sno.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/night/Sno.png
--------------------------------------------------------------------------------
/icons/meteo/night/Sun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/night/Sun.png
--------------------------------------------------------------------------------
/icons/meteo/night/Thu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/meteo/night/Thu.png
--------------------------------------------------------------------------------
/icons/switchs/baby48_On.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/baby48_On.png
--------------------------------------------------------------------------------
/icons/switchs/cocktail2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/cocktail2.png
--------------------------------------------------------------------------------
/icons/switchs/pump48_On.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/pump48_On.png
--------------------------------------------------------------------------------
/icons/switchs/baby48_Off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/baby48_Off.png
--------------------------------------------------------------------------------
/icons/switchs/coffee48_On.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/coffee48_On.png
--------------------------------------------------------------------------------
/icons/switchs/pump48_Off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/pump48_Off.png
--------------------------------------------------------------------------------
/icons/wallpaper/pissanli.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/wallpaper/pissanli.jpg
--------------------------------------------------------------------------------
/icons/wallpaper/romantic.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/wallpaper/romantic.jpg
--------------------------------------------------------------------------------
/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/icons/switchs/cocktail48_Off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/cocktail48_Off.png
--------------------------------------------------------------------------------
/icons/switchs/cocktail48_On.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/cocktail48_On.png
--------------------------------------------------------------------------------
/icons/switchs/coffee48_Off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/coffee48_Off.png
--------------------------------------------------------------------------------
/icons/switchs/mailbox48_Off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/mailbox48_Off.png
--------------------------------------------------------------------------------
/icons/switchs/mailbox48_On.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/mailbox48_On.png
--------------------------------------------------------------------------------
/icons/switchs/radiateur48_On.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/radiateur48_On.png
--------------------------------------------------------------------------------
/icons/wallpaper/autumn_day.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/wallpaper/autumn_day.png
--------------------------------------------------------------------------------
/icons/wallpaper/autumn_night.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/wallpaper/autumn_night.jpg
--------------------------------------------------------------------------------
/icons/wallpaper/spring_day.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/wallpaper/spring_day.jpg
--------------------------------------------------------------------------------
/icons/wallpaper/spring_night.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/wallpaper/spring_night.jpg
--------------------------------------------------------------------------------
/icons/wallpaper/summer_day.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/wallpaper/summer_day.jpg
--------------------------------------------------------------------------------
/icons/wallpaper/summer_night.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/wallpaper/summer_night.jpg
--------------------------------------------------------------------------------
/icons/wallpaper/winter_day.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/wallpaper/winter_day.jpg
--------------------------------------------------------------------------------
/icons/wallpaper/winter_night.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/wallpaper/winter_night.jpg
--------------------------------------------------------------------------------
/js/jquery.ui.touch-punch.min.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/js/jquery.ui.touch-punch.min.js
--------------------------------------------------------------------------------
/icons/switchs/radiateur48_Off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/radiateur48_Off.png
--------------------------------------------------------------------------------
/icons/switchs/thermostat48_Off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/thermostat48_Off.png
--------------------------------------------------------------------------------
/icons/switchs/thermostat48_On.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vil1driver/monitor/HEAD/icons/switchs/thermostat48_On.png
--------------------------------------------------------------------------------
/css/trafic.css:
--------------------------------------------------------------------------------
1 | #map {
2 | /*width: 935px;*/
3 | width: 885px;
4 | height: 505px;
5 | }
6 |
7 |
8 | .avoid-clicks {
9 | pointer-events: none;
10 | }
11 |
12 | @media screen and (min-height: 610px) {
13 | #map
14 | {
15 | height: 590px;
16 | }
17 | }
--------------------------------------------------------------------------------
/css/iframe.css:
--------------------------------------------------------------------------------
1 | iframe
2 | {
3 | border-width: 0;
4 | /*width: 935px;*/
5 | width: 885px;
6 | height: 505px;
7 | frameborder: 0;
8 | scrolling: no;
9 | }
10 |
11 | @media screen and (min-height: 610px) {
12 | iframe
13 | {
14 | height: 590px;
15 | }
16 | }
17 |
18 | .avoid-clicks
19 | {
20 | pointer-events: none;
21 | }
22 |
23 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Custom page for Domoticz
2 |
3 |
4 |
5 |
6 |
7 |
8 | # Usage
9 |
10 |
http://easydomoticz.com/forum/viewtopic.php?f=17&t=331
--------------------------------------------------------------------------------
/pages/canevas.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/pages/iframe.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
17 |
18 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/js/swipeSetup.js:
--------------------------------------------------------------------------------
1 | // swipe function
2 | var autoRestart;
3 | if (delai == 0){
4 | autoRestart = false;
5 | }else{
6 | autoRestart = true;
7 | }
8 | var mySwipe = {};
9 | mySwipe = Swipe(document.getElementById('slider'),{
10 | startSlide: 0,
11 | speed: speed,
12 | auto: delai,
13 | direction: direction,
14 | autoRestart: autoRestart,
15 | continuous: true,
16 | draggable: false,
17 | disableScroll: false,
18 | stopPropagation: true
19 | });
20 |
21 | mySwipe.setup();
22 |
23 | // swipe on keypad
24 | $("body").keydown(function(e) {
25 | if(e.keyCode === 37) { // left key
26 | mySwipe.prev();
27 | } else if(e.keyCode === 39) { // right key
28 | mySwipe.next();
29 | }
30 | });
31 |
32 | // swipe on mouse wheel
33 | $(window).bind('mousewheel DOMMouseScroll', function(event){
34 | if (event.originalEvent.wheelDelta > 0 || event.originalEvent.detail < 0) {
35 | mySwipe.prev();
36 | }
37 | else {
38 | mySwipe.next();
39 | }
40 | });
--------------------------------------------------------------------------------
/pages/trafic.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
40 |
41 |
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/css/logs.css:
--------------------------------------------------------------------------------
1 | #showlog
2 | {
3 | /*width:950px;*/
4 | width:880px;
5 | height:490px;
6 | overflow-y:scroll;
7 | padding: 10px;
8 | font-family: arimo;
9 | font-weight: normal;
10 | font-size: 17px;
11 | text-align:left;
12 | color: #F2DDB3;
13 | text-shadow: 1px 1px 4px black;
14 | }
15 |
16 | #ls_logs1, #ls_logs2, #ls_logs3, #ls_logs4, #ls_logs5
17 | {
18 | font-family: arimo;
19 | font-weight: normal;
20 | color: #999;
21 | font-size: 12px;
22 | margin-top: -20px;
23 | height: 20px;
24 | line-height: 65px;
25 | text-shadow: 1px 1px 5px black;
26 |
27 | }
28 |
29 | #desc_logs1, #desc_logs2, #desc_logs3, #desc_logs4, #desc_logs5
30 | {
31 | font-family: arimo;
32 | font-weight: normal;
33 | /* color: #999; */
34 | color: #F2DDB3;
35 | font-size: 17px;
36 | margin-top: -20px;
37 | height: 25px;
38 | line-height: 15px;
39 | text-shadow: 1px 1px 4px black;
40 |
41 | }
42 |
43 |
44 | #logs1, #logs2, #logs3, #logs4, #logs5
45 | {
46 | font-family: arimo;
47 | font-weight: bold;
48 | /*width: 162px;*/
49 | width: 152px;
50 | padding: 10px;
51 | /* border: 1px solid #1E1E1F; */
52 | border: 1px solid transparent;
53 | border-radius: 0px;
54 | height: 58px;
55 | line-height: 55px;
56 | color: #999;
57 | font-size:40px;
58 | text-shadow: 1px 1px 4px black;
59 |
60 | }
61 |
62 | #logs3
63 | {
64 | /*width: 184px;*/
65 | width: 154px;
66 | }
67 |
68 |
--------------------------------------------------------------------------------
/js/jskata.nofreeze.min.js:
--------------------------------------------------------------------------------
1 | !function(){var o={sleepFor:1,chunkSize:10,stops:[],forLoop:function(o,t,n,i,r){var e,a=this,u=i&&i.sleepFor?i.sleepFor:this.sleepFor,s=i&&i.chunkSize?i.chunkSize:this.chunkSize,f=function(){r&&r(),clearTimeout(e)},c=function(){f&&f(),f=null};a.stops.push(c);var p=function w(){for(var i=0;o()&&i++=r},function(){r++},e,n,i)},infinite:function(o,t,n){return this.forloop(function(){return!0},null,o,t,n)},each:function(o,t,n,i){var r=0;if("[object Array]"==Object.prototype.toString.call(o))return r=0,this.forloop(function(){return r
2 |
3 |
4 |
5 | Domoticz Monitor
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/css/pluie.css:
--------------------------------------------------------------------------------
1 | #ls_pluie_1, #ls_pluie_2, #ls_pluie_3, #ls_pluie_4, #ls_pluie_5, #ls_pluie_6,
2 | #ls_pluie_7, #ls_pluie_8, #ls_pluie_9, #ls_pluie_10, #ls_pluie_11, #ls_pluie_12,
3 | #ls_pluie_13, #ls_pluie_14, #ls_pluie_15, #ls_pluie_16, #ls_pluie_17, #ls_pluie_18,
4 | #ls_pluie_19, #ls_pluie_20, #ls_pluie_21, #ls_pluie_22, #ls_pluie_23, #ls_pluie_24,
5 | #ls_pluie_25, #ls_pluie_26, #ls_pluie_27, #ls_pluie_28, #ls_pluie_29, #ls_pluie_30,
6 | #ls_pluie_31, #ls_pluie_32, #ls_pluie_33, #ls_pluie_34, #ls_pluie_35, #ls_pluie_36
7 | {
8 | font-family: arimo;
9 | font-weight: normal;
10 | color: #999;
11 | font-size: 12px;
12 | margin-top: -20px;
13 | height: 20px;
14 | line-height: 65px;
15 | text-shadow: 1px 1px 5px black;
16 |
17 | }
18 |
19 | #desc_pluie_1, #desc_pluie_2, #desc_pluie_3, #desc_pluie_4, #desc_pluie_5, #desc_pluie_6,
20 | #desc_pluie_7, #desc_pluie_8, #desc_pluie_9, #desc_pluie_10, #desc_pluie_11, #desc_pluie_12,
21 | #desc_pluie_13, #desc_pluie_14, #desc_pluie_15, #desc_pluie_16, #desc_pluie_17, #desc_pluie_18,
22 | #desc_pluie_19, #desc_pluie_20, #desc_pluie_21, #desc_pluie_22, #desc_pluie_23, #desc_pluie_24,
23 | #desc_pluie_25, #desc_pluie_26, #desc_pluie_27, #desc_pluie_28, #desc_pluie_29, #desc_pluie_30,
24 | #desc_pluie_31, #desc_pluie_32, #desc_pluie_33, #desc_pluie_34, #desc_pluie_35, #desc_pluie_36
25 | {
26 | font-family: arimo;
27 | font-weight: normal;
28 | /* color: #999; */
29 | color: #F2DDB3;
30 | font-size: 17px;
31 | margin-top: -20px;
32 | height: 25px;
33 | line-height: 15px;
34 | text-shadow: 1px 1px 4px black;
35 |
36 | }
37 |
38 | #pluie_3, #pluie_4
39 | {
40 | font-family: arimo;
41 | font-weight: bold;
42 | /*width: 304px;*/
43 | width: 282px;
44 | padding: 5px;
45 | border: 1px solid #1E1E1F;
46 | border: 1px solid transparent;
47 | /* border-radius: 0px;*/
48 | height: 152.5px;
49 | line-height: 170px;
50 | font-size: 100px;
51 | color: #999;
52 | margin: 0px ;
53 | text-shadow: 1px 1px 4px black;
54 |
55 |
56 | }
57 |
58 | #pluie_1, #pluie_2, #pluie_5, #pluie_6,
59 | #pluie_7, #pluie_8, #pluie_9, #pluie_10, #pluie_11, #pluie_12,
60 | #pluie_13, #pluie_14, #pluie_15, #pluie_16, #pluie_17, #pluie_18,
61 | #pluie_19, #pluie_20, #pluie_21, #pluie_22, #pluie_23, #pluie_24,
62 | #pluie_25, #pluie_26, #pluie_27, #pluie_28, #pluie_29, #pluie_30,
63 | #pluie_31, #pluie_32, #pluie_33, #pluie_34, #pluie_35, #pluie_36
64 | {
65 | font-family: arimo;
66 | font-weight: bold;
67 | /*width: 134px;*/
68 | width: 123px;
69 | padding: 10px;
70 | /* border: 1px solid #ffffff; */
71 | border: 1px solid transparent;
72 | border-radius: 0px;
73 | height: 58px;
74 | line-height: 55px;
75 | color: #999;
76 | font-size:40px;
77 | text-shadow: 1px 1px 4px black;
78 | margin: 0px ;
79 | }
80 | #pluie_13, #pluie_14, #pluie_15, #pluie_16, #pluie_17, #pluie_18,
81 | #pluie_19, #pluie_20, #pluie_21, #pluie_22, #pluie_23, #pluie_24,
82 | #pluie_25, #pluie_26, #pluie_27, #pluie_28, #pluie_29, #pluie_30
83 | {
84 | line-height: 15px;
85 | }
86 |
87 |
88 |
--------------------------------------------------------------------------------
/css/page4.css:
--------------------------------------------------------------------------------
1 | #ls_cell4_1, #ls_cell4_1a, #ls_cell4_2, #ls_cell4_2a, #ls_cell4_3, #ls_cell4_4, #ls_cell4_4a,
2 | #ls_cell4_5, #ls_cell4_5a, #ls_cell4_6, #ls_cell4_7, #ls_cell4_8, #ls_cell4_9,
3 | #ls_cell4_10, #ls_cell4_11, #ls_cell4_12, #ls_cell4_13, #ls_cell4_14,
4 | #ls_cell4_15, #ls_cell4_16, #ls_cell4_17, #ls_cell4_18, #ls_cell4_19,
5 | #ls_cell4_20, #ls_cell4_21,
6 | #ls_cell4_22, #ls_cell4_23, #ls_cell4_24, #ls_cell4_25, #ls_cell4_26
7 | {
8 | font-family: arimo;
9 | font-weight: normal;
10 | color: #999;
11 | font-size: 12px;
12 | margin-top: -27px;
13 | height: 27px;
14 | line-height: 68px;
15 | text-shadow: 1px 1px 5px black;
16 | }
17 |
18 | #desc_cell4_1, #desc_cell4_2, #desc_cell4_3, #desc_cell4_4,
19 | #desc_cell4_5, #desc_cell4_6, #desc_cell4_7, #desc_cell4_8, #desc_cell4_9,
20 | #desc_cell4_10, #desc_cell4_11, #desc_cell4_12, #desc_cell4_13, #desc_cell4_14,
21 | #desc_cell4_15, #desc_cell4_16, #desc_cell4_17, #desc_cell4_18, #desc_cell4_19,
22 | #desc_cell4_20, #desc_cell4_21,
23 | #desc_cell4_22, #desc_cell4_23, #desc_cell4_24, #desc_cell4_25, #desc_cell4_26
24 | {
25 | font-family: arimo;
26 | font-weight: normal;
27 |
28 | color: #F2DDB3;
29 | font-size: 17px;
30 | margin-top: -20px;
31 | height: 25px;
32 | line-height: 18px;
33 | text-shadow: 1px 1px 4px black;
34 |
35 | }
36 |
37 | #cell4_3, #cell4_21
38 | {
39 | font-family: arimo;
40 | font-weight: bold;
41 |
42 | /*width: 277px;*/
43 | width: 252px;
44 | padding: 5px;
45 | border: 1px solid transparent;
46 | border-radius: 0px;
47 | height: 217px;
48 | line-height: 210px;
49 | color: #999;
50 | font-size: 100px;
51 | text-shadow: 1px 1px 4px black;
52 | }
53 |
54 | #cell4_1, #cell4_2, #cell4_4, #cell4_5,
55 | #cell4_6, #cell4_7, #cell4_8, #cell4_9, #cell4_10,
56 | #cell4_11, #cell4_12, #cell4_13, #cell4_14, #cell4_15,
57 | #cell4_16, #cell4_17, #cell4_18, #cell4_19, #cell4_20,
58 | #cell4_22, #cell4_23, #cell4_24, #cell4_25, #cell4_26
59 | {
60 | font-family: arimo;
61 | font-weight: bold;
62 | /*width: 162px;*/
63 | width: 152px;
64 | padding: 10px;
65 | border: 1px solid transparent;
66 | border-radius: 0px;
67 | height: 90px;
68 | line-height: 75px;
69 | color: #999;
70 | font-size: 40px;
71 | text-shadow: 1px 1px 4px black;
72 | }
73 |
74 | #cell4_1a, #cell4_1b, #cell4_2a, #cell4_2b, #cell4_4a, #cell4_4b, #cell4_5a, #cell4_5b
75 | {
76 | font-family: arimo;
77 | font-weight: bold;
78 | margin: -15px 0px -42px 0px;
79 | color: #999;
80 | font-size: 40px;
81 | position: relative;
82 | z-index:20;
83 | text-shadow: 1px 1px 4px black;
84 | }
85 |
86 | #cell4_6, #cell4_7, #cell4_8, #cell4_9, #cell4_10,
87 | #cell4_11, #cell4_12, #cell4_13, #cell4_14, #cell4_15,
88 | #cell4_16, #cell4_17, #cell4_18, #cell4_19, #cell4_20,
89 | #cell4_22, #cell4_23, #cell4_24, #cell4_25, #cell4_26
90 | {
91 | height: 63px;
92 | line-height: 55px;
93 | }
94 |
95 | #cell4_8, #cell4_13, #cell4_18, #cell4_24
96 | {
97 | /*width: 184px;*/
98 | width: 154px;
99 | }
100 |
101 |
--------------------------------------------------------------------------------
/pages/page5.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
17 |
18 |
19 |
20 |
--
cell5_1
21 |
a
b
c
d
e
f
g
22 |
23 |
24 |
--
cell5_2
25 |
a
b
c
d
e
f
g
26 |
27 |
28 |
29 |
30 |
31 |
--
cell5_3
32 |
a
b
c
d
e
f
g
33 |
34 |
35 |
--
cell5_4
36 |
a
b
c
d
e
f
g
37 |
38 |
39 |
40 |
41 |
42 |
45 |
48 |
51 |
54 |
57 |
58 |
59 |
60 |
63 |
66 |
69 |
72 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/pages/logs.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
16 |
17 |
22 |
23 |
24 |
25 |
28 |
31 |
34 |
37 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
101 |
--------------------------------------------------------------------------------
/pages/page4.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
16 |
17 |
18 |
19 |
20 |
cell4_1
21 |
cell4_2
22 |
23 |
26 |
29 |
30 |
cell4_4
31 |
cell4_5
32 |
33 |
34 |
35 |
36 |
39 |
42 |
45 |
48 |
51 |
52 |
53 |
54 |
57 |
60 |
63 |
66 |
69 |
70 |
71 |
72 |
75 |
78 |
81 |
84 |
87 |
88 |
89 |
90 |
93 |
96 |
99 |
102 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
--------------------------------------------------------------------------------
/pages/page1.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
16 |
17 |
18 |
19 |
--
cell1
20 |
--
cell2
21 |
22 |
25 |
28 |
29 |
--
cell4
30 |
--
cell5
31 |
32 |
33 |
34 |
35 |
38 |
41 |
44 |
47 |
50 |
51 |
52 |
53 |
56 |
59 |
62 |
65 |
68 |
69 |
70 |
71 |
74 |
77 |
80 |
83 |
86 |
87 |
88 |
89 |
92 |
95 |
98 |
101 |
104 |
105 |
106 |
107 |
110 |
113 |
116 |
119 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
--------------------------------------------------------------------------------
/js/full/jskata.nofreeze.js:
--------------------------------------------------------------------------------
1 | /*jslint forin: true */
2 | (function() {
3 | var jsk = {
4 | sleepFor : 1, // How many milliseconds should it sleeps
5 | chunkSize : 10, // How many executions before sleep
6 | stops : [], // Contains all stop functions
7 | // A responsive for
8 | forLoop:function for_(wh, inc, fct, options, stopCallback) {
9 | var self = this;
10 | var timerId;
11 |
12 | var sleepFor = options && options.sleepFor ?
13 | options.sleepFor : this.sleepFor;
14 |
15 | var chunkSize = options && options.chunkSize ?
16 | options.chunkSize : this.chunkSize;
17 |
18 | // Create the stop function
19 | var innerStop = function innerStop() {
20 | if (stopCallback) { stopCallback(); }
21 | clearTimeout(timerId);
22 | };
23 |
24 | var stop = function stopWrapper() {
25 | if (innerStop) { innerStop(); }
26 | innerStop = null;
27 | };
28 |
29 | self.stops.push(stop);
30 |
31 | // Execute a chunk of code
32 | var chunk = function chunk() {
33 | var jskcurrent = 0;
34 | while (wh() && jskcurrent++ < chunkSize) {
35 | fct();
36 | if (inc) { inc(); }
37 | }
38 |
39 | if (wh()) {
40 | timerId = setTimeout(chunk, sleepFor);
41 | } else {
42 | stop();
43 | }
44 | };
45 |
46 | // Start the process
47 | chunk();
48 |
49 | return {stop:stop};
50 | },
51 | // A simple for with an index increasing to a count
52 | forCount : function forCount(maxCount, fct, options, stopCallback) {
53 | var jsKataforCountIndex = (options && options.beginAt) || 0;
54 | var newFct = function() { fct(jsKataforCountIndex); };
55 | return this.forloop(
56 | function() {return jsKataforCountIndex <= maxCount;},
57 | function() {jsKataforCountIndex++;},
58 | newFct,
59 | options,
60 | stopCallback
61 | );
62 | },
63 | // Create an infinite loop
64 | infinite:function infinite(fct, options, stopCallback) {
65 | return this.forloop(
66 | function() { return true; },
67 | null,
68 | fct,
69 | options,
70 | stopCallback
71 | );
72 | },
73 | // Each
74 | each:function(obj, fct, options, stopCallback) {
75 | var i = 0;
76 |
77 | // If it's an array
78 | // taken from jQuery
79 | if (Object.prototype.toString.call(obj) == "[object Array]") {
80 | i = 0;
81 | return this.forloop(
82 | function() { return i < obj.length; },
83 | function() { i++; },
84 | function() { fct.call(obj[i], i, obj[i]); },
85 | options,
86 | stopCallback
87 | );
88 | // If it's an an object
89 | } else {
90 | // Create an array of properties
91 | var props = [];
92 |
93 | for(var prop in obj) {
94 | if (true) { // for jshint
95 | props.push(prop);
96 | }
97 | }
98 |
99 | i = 0;
100 | return this.forloop(
101 | function() { return i < props.length; },
102 | function() { i++; },
103 | function() { fct.call(obj[props[i]], props[i], obj[props[i]]);},
104 | options,
105 | stopCallback
106 | );
107 | }
108 | },
109 | // Stop it after the next round
110 | stop:function() {
111 | for(var i = 0; i < this.stops.length; i++) {
112 | this.stops[i]();
113 | }
114 | if (this.onStop) { this.onStop(); }
115 | }
116 | };
117 |
118 | jsk.forloop = jsk.forLoop; // backward compatibility
119 |
120 | // Creates the base namespaces
121 | if (typeof window !== 'undefined') {
122 | if (window.javascriptKataDotCom === undefined) { window.javascriptKataDotCom = {}; }
123 | if (window.jsKata === undefined) { window.jsKata = window.javascriptKataDotCom; }
124 | if (window.jsk === undefined) { window.jsk = window.javascriptKataDotCom; }
125 | if (window._ === undefined) { window._ = window.javascriptKataDotCom; }
126 |
127 | window.javascriptKataDotCom.nofreeze = jsk;
128 | window.javascriptKataDotCom.nf = window.javascriptKataDotCom.nofreeze;
129 | } else if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
130 | module.exports = jsk;
131 | }
132 | })();
133 |
--------------------------------------------------------------------------------
/pages/page2.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
16 |
17 |
18 |
19 |
20 |
--
cell2_1
21 |
--
cell2_2
22 |
23 |
26 |
29 |
30 |
--
cell2_4
31 |
--
cell2_5
32 |
33 |
34 |
35 |
36 |
39 |
42 |
45 |
48 |
51 |
52 |
53 |
54 |
57 |
60 |
63 |
66 |
69 |
70 |
71 |
72 |
75 |
78 |
81 |
84 |
87 |
88 |
89 |
90 |
93 |
96 |
99 |
102 |
105 |
106 |
107 |
108 |
111 |
114 |
117 |
120 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
--------------------------------------------------------------------------------
/pages/page3.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
16 |
17 |
18 |
19 |
20 |
--
cell3_1
21 |
--
cell3_2
22 |
23 |
26 |
29 |
30 |
--
cell3_4
31 |
--
cell3_5
32 |
33 |
34 |
35 |
36 |
39 |
42 |
45 |
48 |
51 |
52 |
53 |
54 |
57 |
60 |
63 |
66 |
69 |
70 |
71 |
72 |
75 |
78 |
81 |
84 |
87 |
88 |
89 |
90 |
93 |
96 |
99 |
102 |
105 |
106 |
107 |
108 |
111 |
114 |
117 |
120 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
--------------------------------------------------------------------------------
/css/meteo.css:
--------------------------------------------------------------------------------
1 | #ls_meteo1, #ls_meteo2, #ls_meteo3, #ls_meteo25, #ls_meteo4, #ls_meteo5,
2 | #ls_meteo6, #ls_meteo7, #ls_meteo8, #ls_meteo9, #ls_meteo10, #ls_meteo11
3 | {
4 | font-family: arimo;
5 | font-weight: normal;
6 | color: #999;
7 | font-size: 12px;
8 | margin-top: -20px;
9 | height: 20px;
10 | line-height: 65px;
11 | text-shadow: 1px 1px 5px black;
12 |
13 | }
14 |
15 | #desc_meteo1, #desc_meteo2, #desc_meteo3, #desc_meteo25, #desc_meteo4, #desc_meteo5,
16 | #desc_meteo6, #desc_meteo7, #desc_meteo8, #desc_meteo9, #desc_meteo10, #desc_meteo11
17 | {
18 | font-family: arimo;
19 | font-weight: normal;
20 | /* color: #999; */
21 | color: #F2DDB3;
22 | font-size: 17px;
23 | margin-top: -20px;
24 | height: 25px;
25 | line-height: 15px;
26 | text-shadow: 1px 1px 4px black;
27 |
28 | }
29 |
30 | #meteo3, #meteo25
31 | {
32 | font-family: arimo;
33 | font-weight: bold;
34 | /*width: 277px;*/
35 | width: 252px;
36 | padding: 5px;
37 | /* border: 1px solid #1E1E1F; */
38 | border: 1px solid transparent;
39 | border-radius: 0px;
40 | height: 152.5px;
41 | line-height: 170px;
42 | font-size: 100px;
43 | color: #999;
44 | margin: 0px ;
45 | text-shadow: 1px 1px 4px black;
46 |
47 | }
48 |
49 |
50 | #meteo1, #meteo2, #meteo4, #meteo5,
51 | #meteo6, #meteo7, #meteo8, #meteo9, #meteo10, #meteo11
52 | {
53 | font-family: arimo;
54 | font-weight: bold;
55 | /*width: 162px;*/
56 | width: 152px;
57 | padding: 10px;
58 | /* border: 1px solid #1E1E1F; */
59 | border: 1px solid transparent;
60 | border-radius: 0px;
61 | height: 58px;
62 | line-height: 55px;
63 | color: #999;
64 | font-size:40px;
65 | text-shadow: 1px 1px 4px black;
66 |
67 | }
68 |
69 | #meteo7, #meteo8, #meteo9, #meteo10
70 | {
71 | /*width: 114px; */
72 | width: 123px;
73 | }
74 |
75 | #meteo6, #meteo11
76 | {
77 | /*width: 115px; */
78 | width: 122px;
79 | }
80 |
81 |
82 | #desc_jour0, #desc_jour1, #desc_jour2, #desc_jour3,
83 | #temp_day_0_1H00, #temp_day_0_3H00, #temp_day_0_5H00, #temp_day_0_7H00, #temp_day_0_9H00, #temp_day_0_11H00,
84 | #temp_day_0_13H00, #temp_day_0_15H00, #temp_day_0_17H00, #temp_day_0_19H00, #temp_day_0_21H00, #temp_day_0_23H00,
85 | #temp_day_1_1H00, #temp_day_1_3H00, #temp_day_1_5H00, #temp_day_1_7H00, #temp_day_1_9H00, #temp_day_1_11H00,
86 | #temp_day_1_13H00, #temp_day_1_15H00, #temp_day_1_17H00, #temp_day_1_19H00, #temp_day_1_21H00, #temp_day_1_23H00,
87 | #temp_day_2_1H00, #temp_day_2_3H00, #temp_day_2_5H00, #temp_day_2_7H00, #temp_day_2_9H00, #temp_day_2_11H00,
88 | #temp_day_2_13H00, #temp_day_2_15H00, #temp_day_2_17H00, #temp_day_2_19H00, #temp_day_2_21H00, #temp_day_2_23H00,
89 | #temp_day_3_1H00, #temp_day_3_3H00, #temp_day_3_5H00, #temp_day_3_7H00, #temp_day_3_9H00, #temp_day_3_11H00,
90 | #temp_day_3_13H00, #temp_day_3_15H00, #temp_day_3_17H00, #temp_day_3_19H00, #temp_day_3_21H00, #temp_day_3_23H00
91 | {
92 | font-family: arimo;
93 | font-weight: normal;
94 | /* color: #999; */
95 | color: #F2DDB3;
96 | font-size: 20px;
97 | margin-top: -20px;
98 | height: 25px;
99 | line-height: 15px;
100 | text-shadow: 1px 1px 4px black;
101 |
102 | }
103 |
104 | .ghost
105 | {
106 | opacity: 0.3;
107 | }
108 |
109 | #jour0, #jour1, #jour2, #jour3,
110 | #day_0_1H00, #day_0_3H00, #day_0_5H00, #day_0_7H00, #day_0_9H00, #day_0_11H00,
111 | #day_0_13H00, #day_0_15H00, #day_0_17H00, #day_0_19H00, #day_0_21H00, #day_0_23H00,
112 | #day_1_1H00, #day_1_3H00, #day_1_5H00, #day_1_7H00, #day_1_9H00, #day_1_11H00,
113 | #day_1_13H00, #day_1_15H00, #day_1_17H00, #day_1_19H00, #day_1_21H00, #day_1_23H00,
114 | #day_2_1H00, #day_2_3H00, #day_2_5H00, #day_2_7H00, #day_2_9H00, #day_2_11H00,
115 | #day_2_13H00, #day_2_15H00, #day_2_17H00, #day_2_19H00, #day_2_21H00, #day_2_23H00,
116 | #day_3_1H00, #day_3_3H00, #day_3_5H00, #day_3_7H00, #day_3_9H00, #day_3_11H00,
117 | #day_3_13H00, #day_3_15H00, #day_3_17H00, #day_3_19H00, #day_3_21H00, #day_3_23H00
118 | {
119 | font-family: arimo;
120 | font-weight: bold;
121 | /*width: 46px;*/
122 | width: 41.6px;
123 | padding: 10px;
124 | /* border: 1px solid #1E1E1F; */
125 | border: 1px solid transparent;
126 | border-radius: 0px;
127 | height: 58px;
128 | line-height: 55px;
129 | color: #999;
130 | font-size:40px;
131 | text-shadow: 1px 1px 4px black;
132 | }
133 |
134 | #jour0, #jour1, #jour2, #jour3
135 | {
136 | /*width: 55px;*/
137 | width: 55px;
138 | font-size:27px;
139 | color:#F2DDB3;
140 | text-align: left;
141 | margin-top: -5px;
142 | }
143 |
144 | #sep
145 | {
146 | position: absolute;
147 | margin-top: -40px;
148 | margin-left: 0px;
149 | border : 0;
150 | height : 160px;
151 | width : 1px;
152 | background-image: -webkit-linear-gradient(top, transparent, #F2DDB3, transparent);
153 | background-image: -moz-linear-gradient(top, transparent, #F2DDB3, transparent);
154 | background-image: -ms-linear-gradient(top, transparent, #F2DDB3, transparent);
155 | background-image: -o-linear-gradient(top, transparent, #F2DDB3, transparent);
156 | background-image: linear-gradient(top, transparent, #F2DDB3, transparent);
157 | }
158 |
159 | @media screen and (min-height: 610px) {
160 | #sep
161 | {
162 | height : 250px;
163 | }
164 | }
--------------------------------------------------------------------------------
/js/snow.js:
--------------------------------------------------------------------------------
1 | (function($){$.snowfall=function(element,options){var defaults={flakeCount:25,flakeColor:'#ffffff',flakeIndex:999999,minSize:1,maxSize:4,minSpeed:1,maxSpeed:5,round:false,shadow:false,collection:false,collectionHeight:40,deviceorientation:false},options=$.extend(defaults,options),random=function random(min,max){return Math.round(min+ Math.random()*(max-min));};$(element).data("snowfall",this);function Flake(_x,_y,_size,_speed,_id)
2 | {this.id=_id;this.x=_x;this.y=_y;this.size=_size;this.speed=_speed;this.step=0;this.stepSize=random(1,10)/ 100;
3 | if(options.collection){this.target=canvasCollection[random(0,canvasCollection.length-1)];}
4 | var flakeMarkup=$(document.createElement("div")).attr({'class':'snowfall-flakes','id':'flake-'+ this.id}).css({'width':this.size,'height':this.size,'background':options.flakeColor,'position':'absolute','top':this.y,'left':this.x,'fontSize':0,'zIndex':options.flakeIndex});if($(element).get(0).tagName===$(document).get(0).tagName){$('body').append(flakeMarkup);element=$('body');}else{$(element).append(flakeMarkup);}
5 | this.element=document.getElementById('flake-'+ this.id);this.update=function(){this.y+=this.speed;if(this.y>(elHeight)-(this.size+ 6)){this.reset();}
6 | this.element.style.top=this.y+'px';this.element.style.left=this.x+'px';this.step+=this.stepSize;if(doRatio===false){this.x+=Math.cos(this.step);}else{this.x+=(doRatio+ Math.cos(this.step));}
7 | if(options.collection){if(this.x>this.target.x&&this.xthis.target.y&&this.ythis.target.height){if(curY+this.speed+this.size>this.target.height){while(curY+this.speed+this.size>this.target.height&&this.speed>0){this.speed*=.5;}
8 | ctx.fillStyle="#fff";if(colData[parseInt(curX)][parseInt(curY+this.speed+this.size)]==undefined){colData[parseInt(curX)][parseInt(curY+this.speed+this.size)]=1;ctx.fillRect(curX,(curY)+this.speed+this.size,this.size,this.size);}else{colData[parseInt(curX)][parseInt(curY+this.speed)]=1;ctx.fillRect(curX,curY+this.speed,this.size,this.size);}
9 | this.reset();}else{this.speed=1;this.stepSize=0;if(parseInt(curX)+10&&colData[parseInt(curX)-1][parseInt(curY)+1]==undefined){this.x--;}else{ctx.fillStyle="#fff";ctx.fillRect(curX,curY,this.size,this.size);colData[parseInt(curX)][parseInt(curY)]=1;this.reset();}}}}}
10 | if(this.x>(elWidth)- widthOffset||this.x0){document.body.appendChild(canvas);canvas.style.position='absolute';canvas.height=collectionHeight;canvas.width=bounds.width;canvas.style.left=bounds.left+'px';canvas.style.top=bounds.top-collectionHeight+'px';for(var w=0;w
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
16 |
17 |
18 |
19 |
20 |
--
pluie_1
21 |
--
pluie_2
22 |
23 |
26 |
30 |
31 |
--
pluie_5
32 |
--
pluie_6
33 |
34 |
35 |
36 |
37 |
40 |
43 |
46 |
49 |
52 |
55 |
56 |
57 |
58 |
61 |
64 |
67 |
70 |
73 |
76 |
77 |
78 |
79 |
82 |
85 |
88 |
91 |
94 |
97 |
98 |
99 |
100 |
103 |
106 |
109 |
112 |
115 |
118 |
119 |
120 |
121 |
124 |
127 |
130 |
133 |
136 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
--------------------------------------------------------------------------------
/js/swipe.min.js:
--------------------------------------------------------------------------------
1 | !function(a,b){"function"==typeof define&&define.amd?define([],function(){return a.Swipe=b(),a.Swipe}):"object"==typeof module&&module.exports?module.exports=b():a.Swipe=b()}(this,function(){function c(c,d){"use strict";function w(){m.addEventListener?(n.removeEventListener("touchstart",v,!1),n.removeEventListener("mousedown",v,!1),n.removeEventListener("webkitTransitionEnd",v,!1),n.removeEventListener("msTransitionEnd",v,!1),n.removeEventListener("oTransitionEnd",v,!1),n.removeEventListener("otransitionend",v,!1),n.removeEventListener("transitionend",v,!1),a.removeEventListener("resize",v,!1)):a.onresize=null}function x(){m.addEventListener?(m.touch&&n.addEventListener("touchstart",v,!1),d.draggable&&n.addEventListener("mousedown",v,!1),m.transitions&&(n.addEventListener("webkitTransitionEnd",v,!1),n.addEventListener("msTransitionEnd",v,!1),n.addEventListener("oTransitionEnd",v,!1),n.addEventListener("otransitionend",v,!1),n.addEventListener("transitionend",v,!1)),a.addEventListener("resize",v,!1)):a.onresize=u}function y(){if(o=n.children,r=o.length,o.length<2&&(d.continuous=!1),m.transitions&&d.continuous&&o.length<3){var a=o[0].cloneNode(!0),b=n.children[1].cloneNode(!0);n.appendChild(a),n.appendChild(b),a.setAttribute("data-cloned",!0),b.setAttribute("data-cloned",!0),o=n.children}p=new Array(o.length),q=c.getBoundingClientRect().width||c.offsetWidth,n.style.width=o.length*q*2+"px";for(var e=o.length;e--;){var f=o[e];f.style.width=q+"px",f.setAttribute("data-index",e),m.transitions&&(f.style.left=e*-q+"px",G(e,s>e?-q:s=r&&(a-=r),a}function F(a,b){if(a="number"!=typeof a?parseInt(a,10):a,s!==a){if(m.transitions){var c=Math.abs(s-a)/(s-a);if(d.continuous){var e=c;c=-p[D(a)]/q,c!==e&&(a=-c*o.length+a)}for(var f=Math.abs(s-a)-1;f--;)G(D((a>s?a:s)-f-1),q*c,0);a=D(a),G(s,q*c,b||t),G(a,0,b||t),d.continuous&&G(D(a-c),-(q*c),0)}else a=D(a),I(s*-q,a*-q,b||t);s=a,k(function(){B(E(),o[s],c)})}}function G(a,b,c){H(a,b,c),p[a]=b}function H(a,b,c){var d=o[a],e=d&&d.style;e&&(e.webkitTransitionDuration=e.MozTransitionDuration=e.msTransitionDuration=e.OTransitionDuration=e.transitionDuration=c+"ms",e.webkitTransform="translate("+b+"px,0)translateZ(0)",e.msTransform=e.MozTransform=e.OTransform="translateX("+b+"px)")}function I(a,b,c){if(!c)return void(n.style.left=b+"px");var e=+new Date,f=setInterval(function(){var g=+new Date-e;return g>c?(n.style.left=b+"px",(h||d.autoRestart)&&L(),C(E(),o[s]),void clearInterval(f)):void(n.style.left=(b-a)*(Math.floor(g/c*100)/100)+a+"px")},4)}function J(){"next"==d.direction?i=setTimeout(A,h):"index"==d.direction&&(i=setTimeout(function(){F(0,t)},h))}function K(){h=0,clearTimeout(i)}function L(){K(),h=d.auto||0,J()}function M(a){return/^mouse/.test(a.type)}function N(){K(),c.style.visibility="",n.style.width="",n.style.left="";for(var a=o.length;a--;){m.transitions&&H(a,0,0);var b=o[a];if(b.getAttribute("data-cloned")){var d=b.parentElement;d.removeChild(b)}b.style.width="",b.style.left="",b.style.webkitTransitionDuration=b.style.MozTransitionDuration=b.style.msTransitionDuration=b.style.OTransitionDuration=b.style.transitionDuration="",b.style.webkitTransform=b.style.msTransform=b.style.MozTransform=b.style.OTransform=""}w(),u.cancel()}d=d||{};var g,i,e={},f={},h=d.auto||0,j=function(){},k=function(a){setTimeout(a||j,0)},l=function(a,b){function d(){c&&clearTimeout(c)}function e(){var e=this,f=arguments;d(),c=setTimeout(function(){c=null,a.apply(e,f)},b)}b=b||100;var c=null;return e.cancel=d,e},m={addEventListener:!!a.addEventListener,touch:"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch,transitions:function(a){var b=["transitionProperty","WebkitTransition","MozTransition","OTransition","msTransition"];for(var c in b)if(void 0!==a.style[b[c]])return!0;return!1}(b.createElement("swipe"))};if(c){var o,p,q,r,n=c.children[0],s=parseInt(d.startSlide,10)||0,t=d.speed||300;d.continuous=void 0===d.continuous||d.continuous,d.autoRestart=void 0!==d.autoRestart&&d.autoRestart;var u=l(y),v={handleEvent:function(a){switch(a.type){case"mousedown":case"touchstart":this.start(a);break;case"mousemove":case"touchmove":this.move(a);break;case"mouseup":case"mouseleave":case"touchend":this.end(a);break;case"webkitTransitionEnd":case"msTransitionEnd":case"oTransitionEnd":case"otransitionend":case"transitionend":this.transitionEnd(a);break;case"resize":u()}d.stopPropagation&&a.stopPropagation()},start:function(a){var b;M(a)?(b=a,a.preventDefault()):b=a.touches[0],e={x:b.pageX,y:b.pageY,time:+new Date},g=void 0,f={},M(a)?(n.addEventListener("mousemove",this,!1),n.addEventListener("mouseup",this,!1),n.addEventListener("mouseleave",this,!1)):(n.addEventListener("touchmove",this,!1),n.addEventListener("touchend",this,!1))},move:function(a){var b;if(M(a))b=a;else{if(a.touches.length>1||a.scale&&1!==a.scale)return;d.disableScroll&&a.preventDefault(),b=a.touches[0]}f={x:b.pageX-e.x,y:b.pageY-e.y},"undefined"==typeof g&&(g=!!(g||Math.abs(f.x)0||s===o.length-1&&f.x<0?Math.abs(f.x)/q+1:1),H(s-1,f.x+p[s-1],0),H(s,f.x+p[s],0),H(s+1,f.x+p[s+1],0)))},end:function(a){var b=+new Date-e.time,c=Number(b)<250&&Math.abs(f.x)>20||Math.abs(f.x)>q/2,h=!s&&f.x>0||s===o.length-1&&f.x<0;d.continuous&&(h=!1);var i=Math.abs(f.x)/f.x;g||(c&&!h?(i<0?(d.continuous?(G(D(s-1),-q,0),G(D(s+2),q,0)):G(s-1,-q,0),G(s,p[s]-q,t),G(D(s+1),p[D(s+1)]-q,t),s=D(s+1)):(d.continuous?(G(D(s+1),q,0),G(D(s-2),-q,0)):G(s+1,q,0),G(s,p[s]+q,t),G(D(s-1),p[D(s-1)]+q,t),s=D(s-1)),B(E(),o[s],i)):d.continuous?(G(D(s-1),-q,t),G(s,0,t),G(D(s+1),q,t)):(G(s-1,-q,t),G(s,0,t),G(s+1,q,t))),M(a)?(n.removeEventListener("mousemove",v,!1),n.removeEventListener("mouseup",v,!1),n.removeEventListener("mouseleave",v,!1)):(n.removeEventListener("touchmove",v,!1),n.removeEventListener("touchend",v,!1))},transitionEnd:function(a){var b=parseInt(a.target.getAttribute("data-index"),10);b===s&&((h||d.autoRestart)&&L(),C(E(),o[s]))}};return y(),h&&J(),{setup:y,slide:function(a,b){K(),F(a,b)},prev:function(){K(),z()},next:function(){K(),A()},restart:L,stop:K,getPos:E,getNumSlides:function(){return r},kill:N}}}var a="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global||this,b=a.document;return(a.jQuery||a.Zepto)&&!function(a){a.fn.Swipe=function(b){return this.each(function(){a(this).data("Swipe",new c(a(this)[0],b))})}}(a.jQuery||a.Zepto),c});
--------------------------------------------------------------------------------
/pages/clock.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
114 |
115 |
116 |
117 |
120 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
clock15
131 |
clock16
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
--
clock3
140 |
--
clock6
141 |
142 |
143 |
--
clock4
144 |
--
clock7
145 |
146 |
147 |
--
clock5
148 |
--
clock8
149 |
150 |
154 |
155 |
156 |
157 |
158 |
159 |
--
clock9
160 |
--
clock12
161 |
162 |
163 |
--
clock10
164 |
--
clock13
165 |
166 |
167 |
--
clock11
168 |
--
clock14
169 |
170 |
174 |
175 |
176 |
177 |
178 |
181 |
184 |
187 |
190 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
246 |
247 |
--------------------------------------------------------------------------------
/pages/meteo.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
85 |
86 |
87 |
88 |
89 |
--
meteo1
90 |
--
meteo2
91 |
92 |
95 |
98 |
99 |
--
meteo4
100 |
--
meteo5
101 |
102 |
103 |
104 |
105 |
108 |
111 |
114 |
117 |
120 |
123 |
124 |
125 |
126 |
127 |
128 |
133 |
136 |
139 |
142 |
145 |
148 |
151 |
154 |
157 |
160 |
163 |
166 |
169 |
170 |
171 |
172 |
173 |
174 |
177 |
180 |
183 |
186 |
189 |
192 |
195 |
198 |
201 |
204 |
207 |
210 |
213 |
214 |
215 |
216 |
217 |
218 |
221 |
224 |
227 |
230 |
233 |
236 |
239 |
242 |
245 |
248 |
251 |
254 |
257 |
258 |
259 |
260 |
261 |
262 |
265 |
268 |
271 |
274 |
277 |
280 |
283 |
286 |
289 |
292 |
295 |
298 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
--------------------------------------------------------------------------------
/css/global.css:
--------------------------------------------------------------------------------
1 | @font-face{
2 | font-family: 'arimo';
3 | src: url(../fonts/arimo.woff2) format('woff2'),
4 | url(../fonts/arimo.woff) format('woff');
5 | }
6 | @font-face{
7 | font-family: 'brankovic';
8 | src: url(../fonts/brankovic.ttf) format('truetype');
9 | }
10 | @font-face{
11 | font-family: 'digital';
12 | src: url(../fonts/digital.ttf) format('truetype');
13 | }
14 | @font-face{
15 | font-family: 'Audiowide';
16 | src: url(../fonts/Audiowide.ttf) format('truetype');
17 | }
18 |
19 | @viewport {
20 | width: device-width;
21 | zoom: 1;
22 | user-zoom: fixed;
23 | }
24 |
25 | #menu div {
26 | height: 55px;
27 | width: 55px;
28 | }
29 |
30 | #menu img {
31 | height: 48px;
32 | width: 48px;
33 | padding: 2.5px 0px 0px 2.5px;
34 | }
35 |
36 | .autoHide {
37 | display:none;
38 | }
39 |
40 | body,html
41 | {
42 | height: 95%;
43 | margin: 0 auto;
44 | padding: 10px 0px 0px 4px;
45 | cursor: default;
46 | }
47 |
48 |
49 | @media screen and (min-height: 610px) {
50 | .autoHide {
51 | display:block;
52 | }
53 |
54 | body,html
55 | {
56 | padding: 5px 0px 0px 4px;
57 | }
58 | }
59 |
60 |
61 |
62 | body
63 | {
64 | background-color: #000;
65 | }
66 |
67 | /* preload */
68 | body:after{
69 | display:none;
70 | content:
71 | url(../icons/offline.png);
72 |
73 | }
74 |
75 | #black
76 | {
77 | content:"";
78 | position:absolute;
79 | left:0;
80 | right:0;
81 | top:0;
82 | bottom:0;
83 | background:rgba(0,0,0,0);
84 | z-index:-1;
85 | }
86 |
87 | .cnt
88 | {
89 |
90 | /*width: 990px;*/
91 | width: 940px;
92 | margin: 0 auto;
93 | text-align: center;
94 |
95 | }
96 |
97 | .swipe
98 | {
99 | overflow: hidden;
100 | visibility: hidden;
101 | position: relative;
102 | }
103 |
104 | .swipe-wrap
105 | {
106 | overflow: hidden;
107 | position: relative;
108 | }
109 | .swipe-wrap > div
110 | {
111 | float:left;
112 | width:100%;
113 | min-height: 100%;
114 | position: relative;
115 | }
116 |
117 | .v-wrap
118 | {
119 | height: 100%;
120 | white-space: nowrap;
121 | text-align: center;
122 |
123 | }
124 |
125 | .v-wrap:before
126 | {
127 | content: "";
128 | display: inline-block;
129 | vertical-align: middle;
130 | width: 0;
131 | margin-right: -2em;
132 | height: 100%;
133 |
134 | }
135 |
136 | .v-box
137 | {
138 | display: inline-block;
139 | vertical-align: middle;
140 | white-space: normal;
141 | }
142 |
143 |
144 | a, a:visited { text-decoration: none; color: #336699; }
145 | a:hover { text-decoration: none; color: #003366; }
146 |
147 | .frame
148 | {
149 | float: left;
150 | margin: 0px;
151 | padding: 0px 2px 0px 2px;
152 |
153 | }
154 |
155 | sup
156 | {
157 | vertical-align: super;
158 | line-height: 0;
159 | }
160 |
161 | span.percent {
162 | color: #FD0CE9;
163 | font-size: 20px;
164 |
165 | }
166 |
167 | img[alt] {
168 | color: transparent;
169 | text-shadow: none;
170 | }
171 |
172 | #popup_switch, #popup_graph,
173 | #popup_meteo0, #popup_meteo1, #popup_meteo2, #popup_meteo3, #popup_meteo4,
174 | #popup_secpanel, #popup_help, #popup_camera, #popup_selector, #popup_range
175 | {
176 | display: none;
177 | position: absolute;
178 | top: 50%;
179 | left: 50%;
180 | width: 300px;
181 | height: 75px;
182 | margin-left: -150px;
183 | margin-top: -100px;
184 | padding: 0px;
185 | border: 2px solid red;
186 | background: #333;
187 | z-index:1002;
188 | overflow:hidden;
189 | font-family: 'Open Sans', sans-serif;
190 | font-weight: bold;
191 | font-size: 25px;
192 | color: white;
193 | line-height: 75px;
194 | text-align: center;
195 | border-radius: 15px 15px 15px 15px;
196 | }
197 |
198 | #popup_range
199 | {
200 | margin-left: -250px;
201 | margin-top: -150px;
202 | width: 500px;
203 | height: 175px;
204 |
205 | }
206 |
207 | #popup_range label
208 | {
209 | text-align: center;
210 | }
211 |
212 | #popup_range input
213 | {
214 | border:0;
215 | background:transparent;
216 | color:#f6931f;
217 | font-weight:bold;
218 | font-size:25px;
219 | }
220 |
221 | #slider-H
222 | {
223 | margin-left: 50px;
224 | width: 400px;
225 | height:15px;
226 | }
227 |
228 | #popup_selector
229 | {
230 | /*top: calc(50% - attr(height) / 2);
231 | left: calc(50% - attr(width) / 2);*/
232 | top:-18px;
233 | left:none;
234 | font-size: 30px;
235 | width: auto;
236 | min-width: 250px;
237 | height: auto;
238 | min-height: 75px;
239 | line-height: 45px;
240 | padding: 0px 30px 0px 30px;
241 | /*margin: 100 auto;*/
242 | margin-top: 50vh; /* poussé de la moitié de hauteur de viewport */
243 | transform: translateY(-50%); /* tiré de la moitié de sa propre hauteur */
244 |
245 | }
246 |
247 | #popup_meteo0, #popup_meteo1, #popup_meteo2, #popup_meteo3
248 | {
249 | width: 650px;
250 | height: 250px;
251 | margin-left: -325px;
252 | margin-top: -155px;
253 | }
254 |
255 | #popup_meteo0:after, #popup_meteo1:after, #popup_meteo2:after, #popup_meteo3:after
256 | {
257 | content: "\A Waiting..";
258 | width: 650px;
259 | height: 250px;
260 | line-height: 15px;
261 | }
262 |
263 | #popup_meteo4
264 | {
265 | width: 828px;
266 | height: 302px;
267 | margin-left: -415px;
268 | margin-top: -165px;
269 | }
270 |
271 | #popup_meteo4:after
272 | {
273 | content: "\A Waiting..";
274 | width: 828px;
275 | height: 272px;
276 | line-height: 15px;
277 | }
278 |
279 | #popup_graph
280 | {
281 | width: 850px;
282 | height: 280px;
283 | margin-left: -430px;
284 | margin-top: -180px;
285 | }
286 |
287 | .highcharts-container {
288 | text-shadow: none;
289 | }
290 | .highcharts-background {
291 | fill: white;
292 | }
293 | .highcharts-axis-title {
294 | font-family: Tahoma, sans-serif;
295 | font-size: 13px;
296 | font-weight: bold;
297 | }
298 | .highcharts-color-0{
299 | stroke: #3333FF;
300 | }
301 | .highcharts-color-1{
302 | stroke: #0099FF;
303 | }
304 |
305 | #popup_camera
306 | {
307 | width: 640px;
308 | height: 480px;
309 | margin-left: -325px;
310 | margin-top: -255px;
311 | background: url(../icons/offline.jpg) no-repeat;
312 | background-size: 640px 480px;
313 | }
314 |
315 | #popup_camera img
316 | {
317 | width: 640px;
318 | height: 480px;
319 | }
320 |
321 |
322 | #popup_secpanel
323 | {
324 | text-align:center;
325 | border: none;
326 | width: 455px;
327 | height: 600px;
328 | margin-left: -240px;
329 | margin-top: -240px;
330 | border-radius: 0px 0px 0px 0px;
331 | }
332 |
333 | #popup_freeRemote
334 | {
335 | display: none;
336 | position: absolute;
337 | top: 50%;
338 | left: 50%;
339 | padding: 0px;
340 | border: 2px solid red;
341 | background: #333;
342 | z-index:1002;
343 | overflow:hidden;
344 | border-radius: 15px 15px 15px 15px;
345 | width:630px;
346 | height:360px;
347 | margin-left:-325px;
348 | margin-top:-200px
349 | }
350 |
351 | #fade,#fade2
352 | {
353 | display: none;
354 | position: fixed;
355 | top: 0%;
356 | left: 0%;
357 | width: 100%;
358 | height: 100%;
359 | background-color: #000;
360 | z-index:1001;
361 | opacity:.70;
362 | }
363 |
364 | #popup_offline
365 | {
366 | display: none;
367 | position: absolute;
368 | top: 50%;
369 | left: 50%;
370 | width: 358px;
371 | height: 108px;
372 | margin-left: -180px;
373 | margin-top: -130px;
374 | padding: 0px;
375 | border: 2px solid red;
376 | background: url(../icons/offline.png) no-repeat;
377 | z-index:1002;
378 | overflow:hidden;
379 | font-family: 'Open Sans', sans-serif;
380 | font-weight: bold;
381 | font-size: 25px;
382 | color: white;
383 | line-height: 75px;
384 | text-align: center;
385 | border-radius: 15px 15px 15px 15px;
386 | }
387 |
388 | .camera
389 | {
390 | background: url(../icons/offline.jpg) no-repeat;
391 | background-size: 204px 153px;
392 | width: 204px;
393 | height: 153px;
394 | }
395 |
396 | .blink_me {
397 | animation-name: blinker;
398 | animation-duration: 1s;
399 | animation-timing-function: linear;
400 | animation-iteration-count: infinite;
401 | }
402 |
403 | @keyframes blinker {
404 | 0% { opacity: 1.0; }
405 | 50% { opacity: 0.5; }
406 | 100% { opacity: 1.0; }
407 | }
408 |
409 | .T35 { color: #FF0000;}
410 | .T34 { color: #FE1400;}
411 | .T33 { color: #FD2800;}
412 | .T32 { color: #FD3C00;}
413 | .T31 { color: #FC5000;}
414 | .T30 { color: #FC6500;}
415 | .T29 { color: #FC6F0A;}
416 | .T28 { color: #FC7A14;}
417 | .T27 { color: #FC841E;}
418 | .T26 { color: #FC8F28;}
419 | .T25 { color: #FC9A32;}
420 | .T24 { color: #FCA43C;}
421 | .T23 { color: #FCAF46;}
422 | .T22 { color: #FCB950;}
423 | .T21 { color: #FCC45A;}
424 | .T20 { color: #FCCF65;}
425 | .T19 { color: #FCD270;}
426 | .T18 { color: #FDD67B;}
427 | .T17 { color: #FDDA87;}
428 | .T16 { color: #FEDE92;}
429 | .T15 { color: #FFE29E;}
430 | .T14 { color: #F8E5A1;}
431 | .T13 { color: #F1E9A4;}
432 | .T12 { color: #EAEDA7;}
433 | .T11 { color: #E3F1AA;}
434 | .T10 { color: #DDF5AE;}
435 | .T9 { color: #D3F5B7;}
436 | .T8 { color: #CAF5C0;}
437 | .T7 { color: #C0F5C9;}
438 | .T6 { color: #B7F5D2;}
439 | .T5 { color: #AEF5DC;}
440 | .T4 { color: #AEF1E1;}
441 | .T3 { color: #AEEDE6;}
442 | .T2 { color: #AEEAEB;}
443 | .T1 { color: #AEE6F0;}
444 | .T0 { color: #AEE3F5;}
445 | .T00 { color: #EBF4F7;}
446 |
447 | button.yellow{
448 | -moz-box-shadow: 0px 1px 0px 0px #fff6af;
449 | -webkit-box-shadow: 0px 1px 0px 0px #fff6af;
450 | box-shadow: 0px 1px 0px 0px #fff6af;
451 | background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #ffec64), color-stop(1, #ffab23));
452 | background:-moz-linear-gradient(top, #ffec64 5%, #ffab23 100%);
453 | background:-webkit-linear-gradient(top, #ffec64 5%, #ffab23 100%);
454 | background:-o-linear-gradient(top, #ffec64 5%, #ffab23 100%);
455 | background:-ms-linear-gradient(top, #ffec64 5%, #ffab23 100%);
456 | background:linear-gradient(to bottom, #ffec64 5%, #ffab23 100%);
457 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffec64', endColorstr='#ffab23',GradientType=0);
458 | background-color:#ffec64;
459 | -moz-border-radius:6px;
460 | -webkit-border-radius:6px;
461 | border-radius:6px;
462 | border:1px solid #ffaa22;
463 | display:inline-block;
464 | cursor:pointer;
465 | color:#333333;
466 | font-family:Arial;
467 | font-size:15px;
468 | font-weight:bold;
469 | padding:6px 24px;
470 | text-decoration:none;
471 | text-shadow:0px 1px 0px #ffee66;
472 | }
473 |
474 | button.pink{
475 | -moz-box-shadow: 0px 1px 0px 0px #899599;
476 | -webkit-box-shadow: 0px 1px 0px 0px #899599;
477 | box-shadow: 0px 1px 0px 0px #899599;
478 | background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #ededed), color-stop(1, #bab1ba));
479 | background:-moz-linear-gradient(top, #ededed 5%, #bab1ba 100%);
480 | background:-webkit-linear-gradient(top, #ededed 5%, #bab1ba 100%);
481 | background:-o-linear-gradient(top, #ededed 5%, #bab1ba 100%);
482 | background:-ms-linear-gradient(top, #ededed 5%, #bab1ba 100%);
483 | background:linear-gradient(to bottom, #ededed 5%, #bab1ba 100%);
484 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#bab1ba',GradientType=0);
485 | background-color:#ededed;
486 | -moz-border-radius:6px;
487 | -webkit-border-radius:6px;
488 | border-radius:6px;
489 | border:1px solid #d6bcd6;
490 | display:inline-block;
491 | cursor:pointer;
492 | color:#3a8a9e;
493 | font-family:Arial;
494 | font-size:15px;
495 | font-weight:bold;
496 | padding:6px 24px;
497 | text-decoration:none;
498 | text-shadow:0px 1px 0px #e1e2ed;
499 | }
500 |
--------------------------------------------------------------------------------
/css/highcharts.css:
--------------------------------------------------------------------------------
1 | /**
2 | * @license Highcharts
3 | *
4 | * (c) 2009-2016 Torstein Honsi
5 | *
6 | * License: www.highcharts.com/license
7 | */
8 | .highcharts-container {
9 | position: relative;
10 | overflow: hidden;
11 | width: 100%;
12 | height: 100%;
13 | text-align: left;
14 | line-height: normal;
15 | z-index: 0;
16 | /* #1072 */
17 | -webkit-tap-highlight-color: transparent;
18 | font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif;
19 | font-size: 12px;
20 | }
21 |
22 | .highcharts-root text {
23 | stroke-width: 0;
24 | }
25 |
26 | .highcharts-background {
27 | fill: #ffffff;
28 | }
29 |
30 | .highcharts-plot-border, .highcharts-plot-background {
31 | fill: none;
32 | }
33 |
34 | .highcharts-label-box {
35 | fill: none;
36 | }
37 |
38 | .highcharts-button-box {
39 | fill: inherit;
40 | }
41 |
42 | /* Titles */
43 | .highcharts-title {
44 | fill: #333333;
45 | font-size: 1.5em;
46 | }
47 |
48 | .highcharts-subtitle {
49 | fill: #666666;
50 | }
51 |
52 | /* Axes */
53 | .highcharts-axis-line {
54 | fill: none;
55 | stroke: #ccd6eb;
56 | }
57 |
58 | .highcharts-yaxis .highcharts-axis-line {
59 | stroke-width: 0;
60 | }
61 |
62 | .highcharts-axis-title {
63 | fill: #666666;
64 | }
65 |
66 | .highcharts-axis-labels {
67 | fill: #666666;
68 | cursor: default;
69 | font-size: 0.9em;
70 | }
71 |
72 | .highcharts-grid-line {
73 | fill: none;
74 | stroke: #e6e6e6;
75 | }
76 |
77 | .highcharts-xaxis-grid .highcharts-grid-line {
78 | stroke-width: 0;
79 | }
80 |
81 | .highcharts-tick {
82 | stroke: #ccd6eb;
83 | }
84 |
85 | .highcharts-yaxis .highcharts-tick {
86 | stroke-width: 0;
87 | }
88 |
89 | .highcharts-minor-grid-line {
90 | stroke: #f2f2f2;
91 | }
92 |
93 | .highcharts-crosshair-thin {
94 | stroke-width: 1px;
95 | stroke: #cccccc;
96 | }
97 |
98 | .highcharts-crosshair-category {
99 | stroke: #ccd6eb;
100 | stroke-opacity: 0.25;
101 | }
102 |
103 | /* Credits */
104 | .highcharts-credits {
105 | cursor: pointer;
106 | fill: #999999;
107 | font-size: 0.7em;
108 | transition: fill 250ms, font-size 250ms;
109 | }
110 |
111 | .highcharts-credits:hover {
112 | fill: black;
113 | font-size: 1em;
114 | }
115 |
116 | /* Tooltip */
117 | .highcharts-tooltip {
118 | cursor: default;
119 | pointer-events: none;
120 | white-space: nowrap;
121 | transition: stroke 150ms;
122 | }
123 |
124 | .highcharts-tooltip text {
125 | fill: #333333;
126 | }
127 |
128 | .highcharts-tooltip .highcharts-header {
129 | font-size: 0.85em;
130 | }
131 |
132 | .highcharts-tooltip-box {
133 | stroke-width: 1px;
134 | fill: #f7f7f7;
135 | fill-opacity: 0.85;
136 | }
137 |
138 | .highcharts-selection-marker {
139 | fill: #335cad;
140 | fill-opacity: 0.25;
141 | }
142 |
143 | .highcharts-graph {
144 | fill: none;
145 | stroke-width: 2px;
146 | stroke-linecap: round;
147 | stroke-linejoin: round;
148 | }
149 |
150 | .highcharts-state-hover .highcharts-graph {
151 | stroke-width: 3;
152 | }
153 |
154 | .highcharts-state-hover path {
155 | transition: stroke-width 50;
156 | /* quick in */
157 | }
158 |
159 | .highcharts-state-normal path {
160 | transition: stroke-width 250ms;
161 | /* slow out */
162 | }
163 |
164 | /* Legend hover affects points and series */
165 | g.highcharts-series, .highcharts-point {
166 | transition: opacity 250ms;
167 | }
168 |
169 | .highcharts-legend-series-active g.highcharts-series:not(.highcharts-series-hover),
170 | .highcharts-legend-point-active .highcharts-point:not(.highcharts-point-hover) {
171 | opacity: 0.2;
172 | }
173 |
174 | /* Series options */
175 | /* Default colors */
176 | .highcharts-color-0 {
177 | fill: #7cb5ec;
178 | stroke: #7cb5ec;
179 | }
180 |
181 | .highcharts-color-1 {
182 | fill: #434348;
183 | stroke: #434348;
184 | }
185 |
186 | .highcharts-color-2 {
187 | fill: #90ed7d;
188 | stroke: #90ed7d;
189 | }
190 |
191 | .highcharts-color-3 {
192 | fill: #f7a35c;
193 | stroke: #f7a35c;
194 | }
195 |
196 | .highcharts-color-4 {
197 | fill: #8085e9;
198 | stroke: #8085e9;
199 | }
200 |
201 | .highcharts-color-5 {
202 | fill: #f15c80;
203 | stroke: #f15c80;
204 | }
205 |
206 | .highcharts-color-6 {
207 | fill: #e4d354;
208 | stroke: #e4d354;
209 | }
210 |
211 | .highcharts-color-7 {
212 | fill: #2b908f;
213 | stroke: #2b908f;
214 | }
215 |
216 | .highcharts-color-8 {
217 | fill: #f45b5b;
218 | stroke: #f45b5b;
219 | }
220 |
221 | .highcharts-color-9 {
222 | fill: #91e8e1;
223 | stroke: #91e8e1;
224 | }
225 |
226 | .highcharts-area {
227 | fill-opacity: 0.75;
228 | stroke-width: 0;
229 | }
230 |
231 | .highcharts-markers {
232 | stroke-width: 1px;
233 | stroke: #ffffff;
234 | }
235 |
236 | .highcharts-point {
237 | stroke-width: 1px;
238 | }
239 |
240 | .highcharts-dense-data .highcharts-point {
241 | stroke-width: 0;
242 | }
243 |
244 | .highcharts-data-label {
245 | font-size: 0.9em;
246 | font-weight: bold;
247 | }
248 |
249 | .highcharts-data-label-box {
250 | fill: none;
251 | stroke-width: 0;
252 | }
253 |
254 | .highcharts-data-label text {
255 | fill: #333333;
256 | }
257 |
258 | .highcharts-data-label-connector {
259 | fill: none;
260 | }
261 |
262 | .highcharts-halo {
263 | fill-opacity: 0.25;
264 | stroke-width: 0;
265 | }
266 |
267 | .highcharts-point-select {
268 | fill: #cccccc;
269 | stroke: #000000;
270 | }
271 |
272 | .highcharts-column-series .highcharts-point {
273 | stroke: #ffffff;
274 | transition: fill-opacity 250ms;
275 | }
276 |
277 | .highcharts-column-series .highcharts-point-hover {
278 | fill-opacity: 0.75;
279 | transition: fill-opacity 50ms;
280 | }
281 |
282 | .highcharts-pie-series .highcharts-point {
283 | stroke-linejoin: round;
284 | stroke: #ffffff;
285 | }
286 |
287 | .highcharts-pie-series .highcharts-point-hover {
288 | fill-opacity: 0.75;
289 | transition: fill-opacity 50ms;
290 | }
291 |
292 | .highcharts-pie-series .highcharts-point-select {
293 | fill: inherit;
294 | stroke: inherit;
295 | }
296 |
297 | .highcharts-funnel-series .highcharts-point {
298 | stroke-linejoin: round;
299 | stroke: #ffffff;
300 | }
301 |
302 | .highcharts-funnel-series .highcharts-point-hover {
303 | fill-opacity: 0.75;
304 | transition: fill-opacity 50ms;
305 | }
306 |
307 | .highcharts-funnel-series .highcharts-point-select {
308 | fill: inherit;
309 | stroke: inherit;
310 | }
311 |
312 | .highcharts-pyramid-series .highcharts-point {
313 | stroke-linejoin: round;
314 | stroke: #ffffff;
315 | }
316 |
317 | .highcharts-pyramid-series .highcharts-point-hover {
318 | fill-opacity: 0.75;
319 | transition: fill-opacity 50ms;
320 | }
321 |
322 | .highcharts-pyramid-series .highcharts-point-select {
323 | fill: inherit;
324 | stroke: inherit;
325 | }
326 |
327 | .highcharts-solidgauge-series .highcharts-point {
328 | stroke-width: 0;
329 | }
330 |
331 | .highcharts-treemap-series .highcharts-point {
332 | stroke-width: 1px;
333 | stroke: #e6e6e6;
334 | transition: stroke 250ms, fill 250ms, fill-opacity 250ms;
335 | }
336 |
337 | .highcharts-treemap-series .highcharts-point-hover {
338 | stroke: #999999;
339 | transition: stroke 25ms, fill 25ms, fill-opacity 25ms;
340 | }
341 |
342 | .highcharts-treemap-series .highcharts-above-level {
343 | display: none;
344 | }
345 |
346 | .highcharts-treemap-series .highcharts-internal-node {
347 | fill: none;
348 | }
349 |
350 | .highcharts-treemap-series .highcharts-internal-node-interactive {
351 | fill-opacity: 0.15;
352 | cursor: pointer;
353 | }
354 |
355 | .highcharts-treemap-series .highcharts-internal-node-interactive:hover {
356 | fill-opacity: 0.75;
357 | }
358 |
359 | /* Legend */
360 | .highcharts-legend-box {
361 | fill: none;
362 | stroke-width: 0;
363 | }
364 |
365 | .highcharts-legend-item text {
366 | fill: #333333;
367 | font-weight: bold;
368 | cursor: pointer;
369 | stroke-width: 0;
370 | }
371 |
372 | .highcharts-legend-item:hover text {
373 | fill: #000000;
374 | }
375 |
376 | .highcharts-legend-item-hidden * {
377 | fill: #cccccc !important;
378 | stroke: #cccccc !important;
379 | transition: fill 250ms;
380 | }
381 |
382 | .highcharts-legend-nav-active {
383 | fill: #003399;
384 | cursor: pointer;
385 | }
386 |
387 | .highcharts-legend-nav-inactive {
388 | fill: #cccccc;
389 | }
390 |
391 | .highcharts-legend-title-box {
392 | fill: none;
393 | stroke-width: 0;
394 | }
395 |
396 | /* Loading */
397 | .highcharts-loading {
398 | position: absolute;
399 | background-color: #ffffff;
400 | opacity: 0.5;
401 | text-align: center;
402 | z-index: 10;
403 | transition: opacity 250ms;
404 | }
405 |
406 | .highcharts-loading-hidden {
407 | height: 0 !important;
408 | opacity: 0;
409 | overflow: hidden;
410 | transition: opacity 250ms, height 250ms step-end;
411 | }
412 |
413 | .highcharts-loading-inner {
414 | font-weight: bold;
415 | position: relative;
416 | top: 45%;
417 | }
418 |
419 | /* Plot bands and polar pane backgrounds */
420 | .highcharts-plot-band {
421 | fill: #000000;
422 | fill-opacity: 0.05;
423 | }
424 |
425 | .highcharts-plot-line {
426 | fill: none;
427 | stroke: #999999;
428 | stroke-width: 1px;
429 | }
430 |
431 | /* Highcharts More */
432 | .highcharts-boxplot-box {
433 | fill: #ffffff;
434 | }
435 |
436 | .highcharts-boxplot-median {
437 | stroke-width: 2px;
438 | }
439 |
440 | .highcharts-bubble-series .highcharts-point {
441 | fill-opacity: 0.5;
442 | }
443 |
444 | .highcharts-errorbar-series .highcharts-point {
445 | stroke: #000000;
446 | }
447 |
448 | .highcharts-gauge-series .highcharts-data-label-box {
449 | stroke: #cccccc;
450 | stroke-width: 1px;
451 | }
452 |
453 | .highcharts-gauge-series .highcharts-dial {
454 | fill: #000000;
455 | stroke-width: 0;
456 | }
457 |
458 | .highcharts-polygon-series .highcharts-graph {
459 | fill: inherit;
460 | stroke-width: 0;
461 | }
462 |
463 | .highcharts-waterfall-series .highcharts-graph {
464 | stroke: #333333;
465 | stroke-dasharray: 1, 3;
466 | }
467 |
468 | /* Highstock */
469 | .highcharts-navigator-mask {
470 | fill: #6685c2;
471 | /* navigator.maskFill option */
472 | fill-opacity: 0.25;
473 | }
474 |
475 | .highcharts-navigator-mask-inside {
476 | fill: #6685c2;
477 | /* navigator.maskFill option */
478 | fill-opacity: 0.25;
479 | cursor: ew-resize;
480 | }
481 |
482 | .highcharts-navigator-outline {
483 | stroke: #cccccc;
484 | fill: none;
485 | }
486 |
487 | .highcharts-navigator-handle {
488 | stroke: #cccccc;
489 | fill: #f2f2f2;
490 | cursor: ew-resize;
491 | }
492 |
493 | .highcharts-navigator-series {
494 | fill: #335cad;
495 | stroke: #335cad;
496 | }
497 |
498 | .highcharts-navigator-series .highcharts-graph {
499 | stroke-width: 1px;
500 | }
501 |
502 | .highcharts-navigator-series .highcharts-area {
503 | fill-opacity: 0.05;
504 | }
505 |
506 | .highcharts-navigator-xaxis .highcharts-axis-line {
507 | stroke-width: 0;
508 | }
509 |
510 | .highcharts-navigator-xaxis .highcharts-grid-line {
511 | stroke-width: 1px;
512 | stroke: #e6e6e6;
513 | }
514 |
515 | .highcharts-navigator-xaxis.highcharts-axis-labels {
516 | fill: #999999;
517 | }
518 |
519 | .highcharts-navigator-yaxis .highcharts-grid-line {
520 | stroke-width: 0;
521 | }
522 |
523 | .highcharts-scrollbar-thumb {
524 | fill: #cccccc;
525 | stroke: #cccccc;
526 | stroke-width: 1px;
527 | }
528 |
529 | .highcharts-scrollbar-button {
530 | fill: #e6e6e6;
531 | stroke: #cccccc;
532 | stroke-width: 1px;
533 | }
534 |
535 | .highcharts-scrollbar-arrow {
536 | fill: #666666;
537 | }
538 |
539 | .highcharts-scrollbar-rifles {
540 | stroke: #666666;
541 | stroke-width: 1px;
542 | }
543 |
544 | .highcharts-scrollbar-track {
545 | fill: #f2f2f2;
546 | stroke: #f2f2f2;
547 | stroke-width: 1px;
548 | }
549 |
550 | .highcharts-button {
551 | fill: #f7f7f7;
552 | stroke: #cccccc;
553 | cursor: default;
554 | stroke-width: 1px;
555 | transition: fill 250ms;
556 | }
557 |
558 | .highcharts-button text {
559 | fill: #333333;
560 | }
561 |
562 | .highcharts-button-hover {
563 | transition: fill 0ms;
564 | fill: #e6e6e6;
565 | stroke: #333333;
566 | }
567 |
568 | .highcharts-button-pressed {
569 | font-weight: bold;
570 | fill: #e6ebf5;
571 | stroke: #335cad;
572 | }
573 |
574 | .highcharts-button-disabled text {
575 | fill: #cccccc;
576 | }
577 |
578 | .highcharts-range-selector-buttons .highcharts-button {
579 | stroke-width: 0;
580 | }
581 |
582 | .highcharts-range-label rect {
583 | fill: none;
584 | }
585 |
586 | .highcharts-range-label text {
587 | fill: #666666;
588 | }
589 |
590 | .highcharts-range-input rect {
591 | fill: none;
592 | }
593 |
594 | .highcharts-range-input text {
595 | fill: #333333;
596 | }
597 |
598 | input.highcharts-range-selector {
599 | position: absolute;
600 | border: 0;
601 | width: 1px;
602 | /* Chrome needs a pixel to see it */
603 | height: 1px;
604 | padding: 0;
605 | text-align: center;
606 | left: -9em;
607 | /* #4798 */
608 | }
609 |
610 | .highcharts-crosshair-label text {
611 | fill: #ffffff;
612 | font-size: 1.1em;
613 | }
614 |
615 | .highcharts-crosshair-label .highcharts-label-box {
616 | fill: inherit;
617 | }
618 |
619 | .highcharts-candlestick-series .highcharts-point {
620 | stroke: #000000;
621 | stroke-width: 1px;
622 | }
623 |
624 | .highcharts-candlestick-series .highcharts-point-up {
625 | fill: #ffffff;
626 | }
627 |
628 | .highcharts-ohlc-series .highcharts-point-hover {
629 | stroke-width: 3px;
630 | }
631 |
632 | .highcharts-flags-series .highcharts-point {
633 | stroke: #999999;
634 | fill: #ffffff;
635 | }
636 |
637 | .highcharts-flags-series .highcharts-point-hover {
638 | stroke: #000000;
639 | fill: #ccd6eb;
640 | }
641 |
642 | .highcharts-flags-series .highcharts-point text {
643 | fill: #000000;
644 | font-size: 0.9em;
645 | font-weight: bold;
646 | }
647 |
648 | /* Highmaps */
649 | .highcharts-map-series .highcharts-point {
650 | transition: fill 500ms, fill-opacity 500ms, stroke-width 250ms;
651 | stroke: #cccccc;
652 | }
653 |
654 | .highcharts-map-series .highcharts-point-hover {
655 | transition: fill 0ms, fill-opacity 0ms;
656 | fill-opacity: 0.5;
657 | stroke-width: 2px;
658 | }
659 |
660 | .highcharts-mapline-series .highcharts-point {
661 | fill: none;
662 | }
663 |
664 | .highcharts-heatmap-series .highcharts-point {
665 | stroke-width: 0;
666 | }
667 |
668 | .highcharts-map-navigation {
669 | font-size: 1.3em;
670 | font-weight: bold;
671 | text-align: center;
672 | }
673 |
674 | .highcharts-coloraxis {
675 | stroke-width: 0;
676 | }
677 |
678 | .highcharts-coloraxis-marker {
679 | fill: #999999;
680 | }
681 |
682 | .highcharts-null-point {
683 | fill: #f7f7f7;
684 | }
685 |
686 | /* 3d charts */
687 | .highcharts-3d-frame {
688 | fill: transparent;
689 | }
690 |
691 | .highcharts-column-series .highcharts-point {
692 | stroke: inherit;
693 | /* use point color */
694 | }
695 |
696 | /* Exporting module */
697 | .highcharts-contextbutton {
698 | fill: #ffffff;
699 | /* needed to capture hover */
700 | stroke: none;
701 | stroke-linecap: round;
702 | }
703 |
704 | .highcharts-contextbutton:hover {
705 | fill: #e6e6e6;
706 | stroke: #e6e6e6;
707 | }
708 |
709 | .highcharts-button-symbol {
710 | stroke: #666666;
711 | stroke-width: 3px;
712 | }
713 |
714 | .highcharts-menu {
715 | border: 1px solid #999999;
716 | background: #ffffff;
717 | padding: 5px 0;
718 | box-shadow: 3px 3px 10px #888;
719 | }
720 |
721 | .highcharts-menu-item {
722 | padding: 0.5em 1em;
723 | background: none;
724 | color: #333333;
725 | cursor: pointer;
726 | transition: background 250ms, color 250ms;
727 | }
728 |
729 | .highcharts-menu-item:hover {
730 | background: #335cad;
731 | color: #ffffff;
732 | }
733 |
734 | /* Drilldown module */
735 | .highcharts-drilldown-point {
736 | cursor: pointer;
737 | }
738 |
739 | .highcharts-drilldown-data-label text, .highcharts-drilldown-axis-label {
740 | cursor: pointer;
741 | fill: #003399;
742 | font-weight: bold;
743 | text-decoration: underline;
744 | }
745 |
746 | /* No-data module */
747 | .highcharts-no-data text {
748 | font-weight: bold;
749 | font-size: 12px;
750 | fill: #666666;
751 | }
--------------------------------------------------------------------------------
/js/frontpage_settings.js:
--------------------------------------------------------------------------------
1 |
2 | // Change the text for on/off switches
3 | var txt_on = 'On';
4 | var txt_off = 'Off';
5 | var txt_closed = 'Fermée';
6 | var txt_open = 'Ouverte';
7 | var txt_sunboth='Soleil';
8 | var txt_sunset='Coucher soleil';
9 | var txt_sunrise='Lever soleil';
10 | var days = ["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"];
11 | var months = ["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Décembre"];
12 |
13 | // Change the text displayed in PopUps
14 | var txt_switch_on = '\'Switch On\'';
15 | var txt_switch_off = '\'Switch Off\'';
16 | var txt_blind_up = '\'Ouverture\'';
17 | var txt_blind_down = '\'Fermeture\'';
18 | var txt_blind_stop = '\'Arrêt\'';
19 | var txt_wrong_code = 'Mot de pass erroné';
20 |
21 | // Change backgrounds images,size and brightness
22 | var bg_day = 'wallpaper/pissanli.jpg'; // image de fond le jour, laisser vide pour fond noir
23 | var bg_night = 'wallpaper/romantic.jpg'; // image de fond la nuit, laisser vide pour fond noir
24 | var bg_day_spring = ''; // image de fond pour la saison printemps
25 | var bg_night_spring = '';
26 | var bg_day_summer = ''; // image de fond pour la saison été
27 | var bg_night_summer = '';
28 | var bg_day_autumn = ''; // image de fond pour la saison automne
29 | var bg_night_autumn = '';
30 | var bg_day_winter = ''; // image de fond pour la saison hiver
31 | var bg_night_winter = '';
32 | var bg_size = 'cover'; // taille de l'image de fond (ex: '1024px 768px') 'cover' : "couvre" au mieux tout le fond.
33 | var bg_dayBright = 0.5; // luminosité du fond le jour (0=normal 1=noir)
34 | var bg_nightBright = 0.5; // luminosité du fond la nuit (0=normal 1=noir)
35 |
36 | // Change the timeout of the PopUp
37 | var switch_timeout = 1000; // durée d'affichage (en milisecondes) [ 0 = désactivée ]
38 | var wrongCode_timeout = 1500; // durée d'affichage (en milisecondes)
39 | var fad_Duration = 200; // durée de l'animation (en milisecondes) [ 0 = désactivée ]
40 |
41 | // Special items
42 | var city = 'paris'; // localité pour la popup météo option 0,1,2,3 (lors du clic sur l'icon météo) cf http://www.prevision-meteo.ch/
43 | var place = 'France/Île-de-France/Paris/'; // localité pour la popup météo option 4 (lors du clic sur l'icon météo) cf http://www.yr.no/
44 | var blink = false; // faire clignoter les valeurs en alarme (true/false)
45 | var showMonth = false; // affichage du mois dans la date (true/false)
46 |
47 | // Swipe options
48 | var speed = 300; // durée de l'animation (en milisecondes)
49 | var delai = 0; // défilement automatique, temps avant changement de page (en milisecondes)
50 | var direction = 'next'; // si delai est différent de 0, choix d'aller à la page suivante ou de revenir à la première page ('next'/'index')
51 |
52 | // Display
53 | var connectTimeout = 3000; // durée avant d'afficher un domoticz offline (en millisecondes)
54 | var refresh = 8000; // temps entre 2 rafraîchissements (en millisecondes)
55 | var snow = false; // ajout effet chute de neige..
56 |
57 | // Debug
58 | var debug = false; // affichage des infos de debug dans la console (true/false)
59 |
60 | // ############################################################################################################
61 | // #### vvvvv USER VALUES below vvvvv #######
62 | // ############################################################################################################
63 |
64 |
65 | $.roomplan = 0; // define roomplan in Domoticz and create items below. (0 = all devices, not limited to a roomplan)
66 |
67 | //$.domoticzurl = "http://192.168.22.100:8080"; // url de connection à domoticz (ex: http://paul:ochon@toto.com:8765)
68 | $.domoticzurl = location.protocol + "//" + location.host; // auto detect (location.protocol + "//paul:ochon@" + location.host)
69 |
70 | $.PagesList = [
71 |
72 | // ['html page name (location must be in 'monitor/pages/')','menu icon name (location must be in 'monitor/icons/menu/')],
73 |
74 | ['iframe.html','domoticz.png'],
75 | ['clock.html','clock.png'],
76 | ['meteo.html','meteo.png'],
77 | ['pluie.html','pluie.png'],
78 | ['page1.html','light1.png'],
79 | ['page2.html','light2.png'],
80 | ['page3.html','light3.png'],
81 | ['page4.html','light4.png'],
82 | ['page5.html','chauffage.png'],
83 | ['trafic.html','map.png'],
84 | ['logs.html','log.png'],
85 |
86 |
87 |
88 |
89 | []];
90 |
91 |
92 | $.PageArray = [
93 |
94 | //page 1
95 |
96 | // ['idx','value', 'cellule', 'description','1=lastseen 2=icon 3=both ou J+x(popup météo)','pas de thermostat','override css','Alarme ou valeur max de thermostat'],
97 |
98 | ['0','Clock', 'cell1', '','','','font-family:digital;color:#8BFD1C;font-size:160%',''], // heure et date
99 | ['0','', 'cell2', '','','','',''],
100 | ['0','', 'cell3', '','','','',''],
101 | ['0','', 'cell4', '','','','',''],
102 | ['0','', 'cell5', '','','','',''],
103 | ['0','', 'cell6', '','','','',''],
104 | ['0','', 'cell7', '','','','',''],
105 | ['0','', 'cell8', '','','','',''],
106 | ['0','', 'cell9', '','','','',''],
107 | ['0','', 'cell10', '','','','',''],
108 | ['0','', 'cell11', '','','','',''],
109 | ['0','', 'cell12', '','','','',''],
110 | ['0','', 'cell13', '','','','',''],
111 | ['0','', 'cell14', '','','','',''],
112 | ['0','', 'cell15', '','','','',''],
113 | ['0','', 'cell16', '','','','',''],
114 | ['0','', 'cell17', '','','','',''],
115 | ['0','', 'cell18', '','','','',''],
116 | ['0','', 'cell19', '','','','',''],
117 | ['0','', 'cell20', '','','','',''],
118 | ['0','', 'cell21', '','','','',''],
119 | ['0','', 'cell22', '','','','',''],
120 | ['0','', 'cell23', '','','','',''],
121 | ['0','', 'cell24', '','','','',''],
122 | ['0','', 'cell25', '','','','',''],
123 | ['0','SunBoth', 'desc_cell25', '','','','color:#F2DDB3;font-size:19px;font-weight:bold'], // heures soleil dans la description de la cellule 25
124 |
125 | // page 2
126 |
127 | ['0','', 'cell2_1', '','','','',''],
128 | ['0','', 'cell2_2', '','','','',''],
129 | ['0','', 'cell2_3', '','','','',''],
130 | ['0','', 'cell2_4', '','','','',''],
131 | ['0','', 'cell2_5', '','','','',''],
132 | ['0','', 'cell2_6', '','','','',''],
133 | ['0','', 'cell2_7', '','','','',''],
134 | ['0','', 'cell2_8', '','','','',''],
135 | ['0','', 'cell2_9', '','','','',''],
136 | ['0','', 'cell2_10', '','','','',''],
137 | ['0','', 'cell2_11', '','','','',''],
138 | ['0','', 'cell2_12', '','','','',''],
139 | ['0','', 'cell2_13', '','','','',''],
140 | ['0','', 'cell2_14', '','','','',''],
141 | ['0','', 'cell2_15', '','','','',''],
142 | ['0','', 'cell2_16', '','','','',''],
143 | ['0','', 'cell2_17', '','','','',''],
144 | ['0','', 'cell2_18', '','','','',''],
145 | ['0','', 'cell2_19', '','','','',''],
146 | ['0','', 'cell2_20', '','','','',''],
147 | ['0','', 'cell2_21', '','','','',''],
148 | ['0','', 'cell2_22', '','','','',''],
149 | ['0','', 'cell2_23', '','','','',''],
150 | ['0','', 'cell2_24', '','','','',''],
151 | ['0','', 'cell2_25', '','','','',''],
152 |
153 |
154 | // page 3
155 |
156 | ['0','', 'cell3_1', '','','','',''],
157 | ['0','', 'cell3_2', '','','','',''],
158 | // ['0','', 'cell3_3', '','','','',''], // camera
159 | ['0','', 'cell3_4', '','','','',''],
160 | ['0','', 'cell3_5', '','','','',''],
161 | ['0','', 'cell3_6', '','','','',''],
162 | ['0','', 'cell3_7', '','','','',''],
163 | ['0','', 'cell3_8', '','','','',''],
164 | ['0','', 'cell3_9', '','','','',''],
165 | ['0','', 'cell3_10', '','','','',''],
166 | ['0','', 'cell3_11', '','','','',''],
167 | ['0','', 'cell3_12', '','','','',''],
168 | ['0','', 'cell3_13', '','','','',''],
169 | ['0','', 'cell3_14', '','','','',''],
170 | ['0','', 'cell3_15', '','','','',''],
171 | ['0','', 'cell3_16', '','','','',''],
172 | ['0','', 'cell3_17', '','','','',''],
173 | ['0','', 'cell3_18', '','','','',''],
174 | ['0','', 'cell3_19', '','','','',''],
175 | ['0','', 'cell3_20', '','','','',''],
176 | ['0','', 'cell3_21', '','','','',''],
177 | ['0','', 'cell3_22', '','','','',''],
178 | ['0','', 'cell3_23', '','','','',''],
179 | ['0','', 'cell3_24', '','','','',''],
180 | // ['0','', 'cell3_25', '','','','',''], // camera
181 |
182 |
183 |
184 | []];
185 | $.PageArray_Scenes = [ // placez ci dessous vos groupes et scènes
186 |
187 | // ['idx','value','cellule','description','icon name (ex: Light, Blinds, WallSocket, Generic,..)','override css'],
188 |
189 | ['0','', '', '','',''],
190 | ['0','', '', '','',''],
191 | ['0','', '', '','',''],
192 |
193 | []];
194 | $.PageArray_UserVariable = [ // placez ci dessous vos userVariable
195 |
196 | //['idx','value','cellule','description','override css'],
197 |
198 | ['0','Value','','',''],
199 |
200 | []];
201 |
202 |
203 | ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
204 |
205 | // MQTT
206 |
207 |
208 | // called when a message arrives
209 | function onMessageArrived(message) {
210 | console.log('%cMQTT Message Arrived:','color: #c44800','\n',message.payloadString);
211 |
212 | message = JSON.parse(message.payloadString);
213 |
214 |
215 |
216 | switch(message.name) { // filtre sur le nom du dispositif
217 |
218 |
219 | ////////////////////////////////////////////////////////////////////////////////
220 |
221 | // si le nom est "d1", changer de page
222 | case "d1": // nom du bouton de la télécommande
223 |
224 | if (message.nvalue == 1) // status On
225 | mySwipe.prev(); // page précédente
226 |
227 | if (message.nvalue == 0) // status Off
228 | mySwipe.next(); // page suivante
229 |
230 | break;
231 |
232 | ////////////////////////////////////////////////////////////////////////////////
233 |
234 | case "Cafetiere on": // nom du bouton pushOn de mise en route de la cafetière
235 |
236 | // affiche une popup text
237 | lightbox_open('switch',25000,'café en préparation');
238 |
239 | break;
240 |
241 | ////////////////////////////////////////////////////////////////////////////////
242 |
243 | //lire une musique
244 | case "d2": // nom du bouton de la télécommande
245 |
246 | /*
247 | /!\ IMPORTANT /!\
248 |
249 | à fin de pouvoir lancer de l'audio automatiquement
250 | il est nécessaire de désactiver la sécurité suivante
251 | "Exiger un geste de l'utilisateur pour lire des éléments multimédias"
252 |
253 | saisissez cette adresse dans chrome et désactivez l'option
254 |
255 | chrome://flags/#disable-gesture-requirement-for-media-playback
256 |
257 | */
258 |
259 | var oAudio = document.getElementById('myaudio');
260 |
261 | if (message.nvalue == 1){ // status On
262 |
263 | oAudio.src = "http://icecast.skyrock.net/s/natio_mp3_128k";
264 | oAudio.play();
265 | }
266 |
267 | if (message.nvalue == 0){ // status Off
268 |
269 | oAudio.pause(); // stop
270 | oAudio.src = "";
271 | }
272 |
273 | break;
274 |
275 | ////////////////////////////////////////////////////////////////////////////////
276 |
277 | // afficher la caméra en grand
278 | case "d3": // nom du bouton de la télécommande
279 |
280 | if (message.nvalue == 1){ // status On
281 | var source = "http://www.saintveranmeteo.eu/villagesaintveranwebcam.jpg"; // source du flux de la caméra
282 | $('#popup_camera').html('
'); // charge le flux dans la popup caméra
283 | lightbox_open('camera', 25000); // afficher la popup 25 secondes
284 | }
285 | if (message.nvalue == 0) // status Off
286 | lightbox_close('camera'); // fermer la popup
287 |
288 | break;
289 |
290 | ////////////////////////////////////////////////////////////////////////////////
291 |
292 | // annonces vocales
293 | case "tts": // nom du widget text
294 |
295 | /*
296 | /!\ IMPORTANT /!\
297 |
298 | à fin de pouvoir lancer de l'audio automatiquement
299 | il est nécessaire de désactiver la sécurité suivante
300 | "Exiger un geste de l'utilisateur pour lire des éléments multimédias"
301 |
302 | saisissez cette adresse dans chrome et désactivez l'option
303 |
304 | chrome://flags/#disable-gesture-requirement-for-media-playback
305 |
306 | */
307 |
308 | var text = message.svalue1;
309 | var oAudio = document.getElementById('myaudio');
310 | var launched = false;
311 | oAudio.src = "sounds/Arpeggio.ogg"; // ding dong d'alerte
312 | oAudio.play();
313 | oAudio.onended = function() {
314 | if ( !launched ) {
315 | launched = true;
316 | oAudio.src = "http://www.voxygen.fr/sites/all/modules/voxygen_voices/assets/proxy/index.php?method=redirect&text="+text+"&voice=Fabienne";
317 | oAudio.play();
318 | }
319 | };
320 |
321 | break;
322 |
323 | ////////////////////////////////////////////////////////////////////////////////
324 |
325 | // afficher une page précise suivant le choix d'un switch sélecteur
326 | case "page": // nom du switch sélecteur
327 |
328 | if (message.svalue1 == 10) // sélecteur à 10 %
329 | mySwipe.slide(0); // vers page 1 (la première page est numéroté 0)
330 | if (message.svalue1 == 20)
331 | mySwipe.slide(1); // vers page 2
332 | if (message.svalue1 == 30)
333 | mySwipe.slide(2); // vers page 3
334 | if (message.svalue1 == 40)
335 | mySwipe.slide(3); // vers page 4
336 | if (message.svalue1 == 50)
337 | mySwipe.slide(4); // vers page 5
338 | if (message.svalue1 == 60)
339 | mySwipe.slide(5); // vers page 6
340 | if (message.svalue1 == 70)
341 | mySwipe.slide(6); // vers page 7
342 | if (message.svalue1 == 80)
343 | mySwipe.slide(7); // vers page 8
344 | if (message.svalue1 == 90)
345 | mySwipe.slide(8); // vers page 9
346 | if (message.svalue1 == 100)
347 | mySwipe.slide(9); // vers page 10
348 |
349 | break;
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 | }
372 |
373 | }
374 |
375 |
376 |
377 | // ############################################################################################################
378 | // #### ^^^^^ USER VALUES above ^^^^^ #######
379 | // ############################################################################################################
380 |
381 |
382 |
383 |
384 |
--------------------------------------------------------------------------------
/js/frontpage_settings_exemple.js:
--------------------------------------------------------------------------------
1 |
2 | // Change the text for on/off switches
3 | var txt_on = 'On';
4 | var txt_off = 'Off';
5 | var txt_closed = 'Fermée';
6 | var txt_open = 'Ouverte';
7 | var txt_sunboth = 'Soleil';
8 | var txt_sunset = 'Coucher soleil';
9 | var txt_sunrise = 'Lever soleil';
10 | var days = ["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"];
11 | var months = ["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Décembre"];
12 |
13 | // Change the text displayed in PopUps
14 | var txt_switch_on = '\'Switch On\'';
15 | var txt_switch_off = '\'Switch Off\'';
16 | var txt_blind_up = '\'Ouverture\'';
17 | var txt_blind_down = '\'Fermeture\'';
18 | var txt_blind_stop = '\'Arrêt\'';
19 | var txt_wrong_code = 'Mot de pass erroné';
20 |
21 | // Change backgrounds images, size and brightness
22 | var bg_day = ''; // image de fond le jour, laisser vide pour fond noir
23 | var bg_night = ''; // image de fond la nuit, laisser vide pour fond noir
24 | var bg_day_spring = 'wallpaper/spring_day.jpg'; // image de fond pour la saison printemps
25 | var bg_night_spring = 'wallpaper/spring_night.jpg';
26 | var bg_day_summer = 'wallpaper/summer_day.jpg'; // image de fond pour la saison été
27 | var bg_night_summer = 'wallpaper/summer_night.jpg';
28 | var bg_day_autumn = 'wallpaper/autumn_day.png'; // image de fond pour la saison automne
29 | var bg_night_autumn = 'wallpaper/autumn_night.jpg';
30 | var bg_day_winter = 'wallpaper/winter_day.jpg'; // image de fond pour la saison hiver
31 | var bg_night_winter = 'wallpaper/winter_night.jpg';
32 | var bg_size = 'cover'; // taille de l'image de fond (ex: '1024px 768px') 'cover' : "couvre" au mieux tout le fond.
33 | var bg_dayBright = 0.5; // luminosité du fond le jour (0=normal 1=noir)
34 | var bg_nightBright = 0.5; // luminosité du fond la nuit (0=normal 1=noir)
35 |
36 | // Change the timeout of the PopUp
37 | var switch_timeout = 0; // durée d'affichage (en milisecondes) [ 0 = désactivée ]
38 | var wrongCode_timeout = 1500; // durée d'affichage (en milisecondes)
39 | var fad_Duration = 0; // durée de l'animation (en milisecondes) [ 0 = désactivée ]
40 |
41 | // Special items
42 | var city = 'saint-jacques-de-la-lande'; // localité pour la popup météo option 0,1,2,3 (lors du clic sur l'icon météo) cf http://www.prevision-meteo.ch/
43 | var place = 'France/Brittany/Saint-Jacques-de-la-Lande'; // localité pour la popup météo option 4 (lors du clic sur l'icon météo) cf http://www.yr.no/
44 | var blink = true; // faire clignoter les valeurs en alarme (true/false)
45 | var showMonth = false; // affichage du mois dans la date (true/false)
46 |
47 | // Swipe options
48 | var speed = 300; // durée de l'animation (en milisecondes)
49 | var delai = 60000; // défilement automatique, temps avant changement de page (en milisecondes)
50 | var direction = 'index'; // si delai est différent de 0, choix d'aller à la page suivante ou de revenir à la première page ('next'/'index')
51 |
52 | // Display
53 | var connectTimeout = 3000; // durée avant d'afficher un domoticz offline (en millisecondes)
54 | var refresh = 8000; // temps entre 2 rafraîchissements (en millisecondes)
55 | var snow = false; // ajout effet chute de neige..
56 |
57 | // Debug
58 | var debug = false; // affichage des infos de debug dans la console (true/false)
59 |
60 | // ############################################################################################################
61 | // #### vvvvv USER VALUES below vvvvv #######
62 | // ############################################################################################################
63 |
64 |
65 | $.roomplan = 2; // define roomplan in Domoticz and create items below. (0 = all devices, not limited to a roomplan)
66 |
67 | //$.domoticzurl = "http://192.168.22.100:8080"; // url de connection à domoticz (ex: http://paul:ochon@toto.com:8765)
68 | $.domoticzurl = location.protocol + "//" + location.host; // auto detect (location.protocol + "//paul:ochon@" + location.host)
69 |
70 | $.PagesList = [
71 |
72 | // ['html page name (location must be in 'monitor/pages/')','menu icon name (location must be in 'monitor/icons/menu/')],
73 |
74 | ['iframe.html','domoticz.png'],
75 | ['clock.html','clock.png'],
76 | ['meteo.html','meteo.png'],
77 | ['pluie.html','pluie.png'],
78 | ['page1.html','light1.png'],
79 | ['page2.html','light2.png'],
80 | ['page3.html','light3.png'],
81 | ['page4.html','light4.png'],
82 | ['page5.html','chauffage.png'],
83 | ['trafic.html','map.png'],
84 | ['logs.html','log.png'],
85 |
86 |
87 |
88 |
89 | []];
90 |
91 |
92 | $.PageArray = [
93 |
94 | // ['idx','value','cellule','description','1=lastseen 2=icon 3=both ou J+x(popup météo)','pas de thermostat','override css','Alarme ou valeur max de thermostat'],
95 |
96 |
97 | //page 1
98 | ['exterieur','Temp', 'cell3', ''], // températures exterieure
99 |
100 |
101 | ['la cafetiere','Status', 'cell26', 'Cafetière','2'], // interrupteurs classics
102 | ['les pierres','Status', 'cell13', 'Pierres','2'],
103 | ['la chambre','Status', 'cell9', 'Chambre','2'],
104 | ['la musique','Status', 'cell4', '','2'], // interrupteurs classics avec icon
105 |
106 | ['rgb1_rouge','Level', 'cell12', 'rgb1_red','2'], // rgb
107 | ['rgb1_vert','Level', 'cell17', 'rgb1_green','2'], // rgb
108 | ['rgb1_bleu','Level', 'cell22', 'rgb1_blue','2'], // rgb
109 | ['rgb1_show','Status', 'cell7', 'rgb1_show','2'], // rgb
110 |
111 | ['rgb2_rouge','Level', 'cell11', 'rgb2_red','2'], // rgb
112 | ['rgb2_vert','Level', 'cell16', 'rgb2_green','2'], // rgb
113 | ['rgb2_bleu','Level', 'cell21', 'rgb2_blue','2'], // rgb
114 | ['rgb2_show','Status', 'cell6', 'rgb2_show','2'], // rgb
115 |
116 | ['','Hide', 'cell2', ''], // réveil
117 |
118 |
119 |
120 | ['la veilleuse','Level', 'cell14', 'Veilleuse','2'], // variateur
121 | ['le salon','Level', 'cell8', 'Salon','2'],
122 |
123 | ['mpd_goa','Status', 'cell23', 'Goa','','','color:#6594FE;font-family:brankovic;font-size:100%'], // boutons PushOn ou pushOff
124 | ['mpd_metal','Status', 'cell20', 'Metal','','','color:#6594FE;font-family:brankovic;font-size:100%'],
125 | ['mpd_spoon','Status', 'cell5', 'Spoon','','','color:#6594FE;font-family:brankovic;font-size:100%'],
126 | ['mpd_reggae','Status', 'cell10', 'Reggae','','','color:#6594FE;font-family:brankovic;font-size:100%'],
127 | ['mpd_rock','Status', 'cell15', 'Rock','','','color:#6594FE;font-family:brankovic;font-size:100%'],
128 |
129 | ['exterieur','ForecastStr', 'cell25', '','4'], // icon météo (idx du capteur de température extérieur virtuel Weather Underground)
130 | ['','Hide', 'cell1', ''], // heure et date
131 |
132 |
133 | ['','SunBoth', 'desc_cell25', '','','','color:#F2DDB3;font-size:19px;font-weight:bold'], // heures soleil dans la description de la cellule 25
134 |
135 |
136 | // page 5
137 |
138 | ['salon','Temp', 'cell5_3', 'Salon (7h - 23h)','','','color:#FA8072',''], // températures salon color:#FA8072
139 | ['chambre','Temp', 'cell5_4', 'Chambre (9h - 21h)','','','color:#52CE8A'], // températures chambre color:#52CE8A
140 | ['salle de bain','Temp', 'cell5_2', 'Salle de bain','','','color:#A752CE'], // températures Salle de bain color:#A752CE
141 |
142 | ['salon','Humidity', 'cell5_3f', '','','','color:#1CD5FD','x < 30 || x > 70'], // Humidity salon
143 | ['chambre','Humidity', 'cell5_4f', '','','','color:#1CD5FD','x < 30 || x > 70'], // Humidity chambre font-size:110%;color:#1CD5FD
144 | ['salle de bain','Humidity', 'cell5_2f', '','','','color:#1CD5FD','x < 30 || x > 70'], // Humidity Salle de bain font-size:110%;color:#1CD5FD
145 |
146 | ['th_chambre','SetPoint', 'cell5_4b', '','','0.5','font-size:110%;color:#72DDEA','23'], // thermostat salon avec un pas de 0.5, valeur max 23°C
147 | ['th_salon','SetPoint', 'cell5_3b', '','','0.5','font-size:110%;color:#72DDEA','23'], // thermostat chambre avec un pas de 0.5, valeur max 23°C
148 | ['th_salle de bain','SetPoint', 'cell5_2b', '','','1','font-size:110%;color:#72DDEA','25'], // thermostat Salle de bain avec un pas de 1, valeur max 25°C
149 |
150 | ['boost','Status', 'cell5_3g', 'Boost','2'],
151 | ['','Hide', 'cell5_1b', ''],
152 | ['','Hide', 'cell5_1d', ''],
153 | ['','Hide', 'cell5_3a', ''],
154 |
155 | ['radiateur salon','Status', 'cell5_3e', '','2'], // visu radiateur salon
156 | ['radiateur chambre','Status', 'cell5_4d', '','2'], // visu radiateur chambre
157 | ['conso veille euros','Euro', 'cell5_8', 'edf hier','','','color:pink','x > 4'],
158 |
159 | ['chauffage','Status', 'cell5_7', 'Chauffage','2'],
160 |
161 |
162 | ['','Hide', 'cell5_3d', ''],
163 | ['112','Usage', 'cell5_9', 'edf now','','','color:#D5DE3F;font-size:90%','x > 7500'], // consommation instantanée (téléinfo)
164 | ['107','CounterToday', 'cell5_6', 'chauffage day','','','color:#D5DE3F;font-size:90%'], // consommation totale (téléinfo)
165 | ['','Hide', 'cell5_4c', ''],
166 |
167 | ['exterieur','Temp', 'cell5_1c', '','','','font-size:180%'], // températures exterieure
168 |
169 | ['','Hide', 'cell5_1a', ''],
170 |
171 | ['exterieur','ForecastStr', 'cell5_1', '','1'], // icon météo (idx du capteur de température extérieur virtuel Weather Underground)
172 |
173 | ['exterieur','HumidityStatus', 'cell5_1f', '','','','color:#88B496;font-size:80%'],
174 |
175 |
176 | ['','Hide', 'cell5_4a', ''],
177 | ['','Hide', 'cell5_2a', ''],
178 | ['','Hide', 'cell5_2c', ''],
179 | ['','Hide', 'cell5_2d', ''],
180 | ['','Hide', 'cell5_3c', ''],
181 | ['','Hide', 'cell5_4e', ''],
182 | ['','Hide', 'cell5_4g', ''],
183 |
184 | ['conso chauffage','Usage', 'cell5_5', 'chauffage now','','','color:#D5DE3F;font-size:90%','x > 4000'], // consommation instantanée chauffage
185 |
186 | ['soufflant','Status', 'cell5_2e', '','2'], // soufflant sdb
187 | ['douche','Status', 'cell5_2g', '','2'], // douche
188 | ['proba pluie 1h','Data', 'cell5_1e', '','','','','x > 65'], // proba pluie dans 1h
189 | ['proba pluie 2h','Data', 'cell5_1g', '','','','','x > 45'], // proba pluie dans 2h
190 |
191 | // clock page
192 |
193 | ['','Hide', 'clock3', ''],
194 | ['','Hide', 'clock5', ''],
195 | ['','Hide', 'clock6', ''],
196 | ['','Hide', 'clock7', ''],
197 | ['','Hide', 'clock8', ''],
198 | ['','Hide', 'clock10', ''],
199 | ['','Hide', 'clock11', ''],
200 | ['','Hide', 'clock12', ''],
201 | ['','Hide', 'clock13', ''],
202 | ['','Hide', 'clock14', ''],
203 | ['reveil','Wakeup', 'clock16', '','','','color:#3A5486;font-size:130%'], // réveil
204 | ['','Date', 'clock15', '','','','color:#3A5486;font-size:130%'], // date
205 | // ['','MonthYear', 'clock15', '','','','color:#3A5486;font-size:130%'], // date
206 | ['exterieur','ForecastStr', 'clock2', ''], // icon météo (idx du capteur de température extérieur virtuel Weather Underground)
207 |
208 | ['','SunBoth', 'desc_clock2', '','','','color:#F2DDB3;font-size:19px;font-weight:bold'], // heures soleil dans la description de la cellule clock2
209 | ['exterieur','Temp', 'clock1', ''], // températures exterieure
210 | // ['','Camera', 'clock4', 'http://webcam.st-malo.com/mjpg/video.mjpg','http://webcam.st-malo.com/axis-cgi/mjpg/video.cgi','',''], // camera 1
211 | ['','Camera', 'clock4', 'http://192.168.22.100:2550','','',''], // camera 1
212 | // ['','Hide', 'clock4', ''],
213 | ['saint','Data', 'clock9', '','','','color:#4dd2ff'], // saint du jour
214 |
215 |
216 |
217 | []];
218 | $.PageArray_Scenes = [ // placez ci dessous vos groupes et scènes
219 |
220 | // ['idx','value','cellule','description','icon name (ex: Light, Blinds, WallSocket, Generic,..)','override css'],
221 |
222 | ['ciné','Status', 'cell18', 'Ciné','','color:#E4D422;font-size:90%'], // scène
223 | ['apéro','Status', 'cell19', 'Apéro','','color:#E4D422;font-size:90%'], // scène
224 | ['toute la maison','Status', 'cell24', 'Toute la maison','Light'], // groupe avec icon Light
225 |
226 | []];
227 | $.PageArray_UserVariable = [ // placez ci dessous vos userVariable
228 |
229 | //['idx','value','cellule','description','override css'],
230 |
231 | ['reveilmatin','Value','cell5_9','',''],
232 |
233 | []];
234 |
235 |
236 |
237 | ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
238 |
239 | // MQTT
240 |
241 |
242 | // called when a message arrives
243 | function onMessageArrived(message) {
244 | console.log('%cMQTT Message Arrived:','color: #c44800','\n',message.payloadString);
245 |
246 | message = JSON.parse(message.payloadString);
247 |
248 |
249 |
250 | switch(message.name) { // filtre sur le nom du dispositif
251 |
252 |
253 | ////////////////////////////////////////////////////////////////////////////////
254 |
255 | // si le nom est "d1", changer de page
256 | case "d1": // nom du bouton de la télécommande
257 |
258 | if (message.nvalue == 1) // status On
259 | mySwipe.prev(); // page précédente
260 |
261 | if (message.nvalue == 0) // status Off
262 | mySwipe.next(); // page suivante
263 |
264 | break;
265 |
266 | ////////////////////////////////////////////////////////////////////////////////
267 |
268 | case "Cafetiere on": // nom du bouton pushOn de mise en route de la cafetière
269 |
270 | // affiche une popup text
271 | lightbox_open('switch',25000,'café en préparation');
272 |
273 | break;
274 |
275 | ////////////////////////////////////////////////////////////////////////////////
276 |
277 | //lire une musique
278 | case "d2": // nom du bouton de la télécommande
279 |
280 | /*
281 | /!\ IMPORTANT /!\
282 |
283 | à fin de pouvoir lancer de l'audio automatiquement
284 | il est nécessaire de désactiver la sécurité suivante
285 | "Exiger un geste de l'utilisateur pour lire des éléments multimédias"
286 |
287 | saisissez cette adresse dans chrome et désactivez l'option
288 |
289 | chrome://flags/#disable-gesture-requirement-for-media-playback
290 |
291 | */
292 |
293 | var oAudio = document.getElementById('myaudio');
294 |
295 | if (message.nvalue == 1){ // status On
296 |
297 | oAudio.src = "http://icecast.skyrock.net/s/natio_mp3_128k";
298 | oAudio.play();
299 | }
300 |
301 | if (message.nvalue == 0){ // status Off
302 |
303 | oAudio.pause(); // stop
304 | oAudio.src = "";
305 | }
306 |
307 | break;
308 |
309 | ////////////////////////////////////////////////////////////////////////////////
310 |
311 | // afficher la caméra en grand
312 | case "d3": // nom du bouton de la télécommande
313 |
314 | if (message.nvalue == 1){ // status On
315 | var source = "http://www.saintveranmeteo.eu/villagesaintveranwebcam.jpg"; // source du flux de la caméra
316 | $('#popup_camera').html('
'); // charge le flux dans la popup caméra
317 | lightbox_open('camera', 25000); // afficher la popup 25 secondes
318 | }
319 | if (message.nvalue == 0) // status Off
320 | lightbox_close('camera'); // fermer la popup
321 |
322 | break;
323 |
324 | ////////////////////////////////////////////////////////////////////////////////
325 |
326 | // annonces vocales
327 | case "tts": // nom du widget text
328 |
329 | /*
330 | /!\ IMPORTANT /!\
331 |
332 | à fin de pouvoir lancer de l'audio automatiquement
333 | il est nécessaire de désactiver la sécurité suivante
334 | "Exiger un geste de l'utilisateur pour lire des éléments multimédias"
335 |
336 | saisissez cette adresse dans chrome et désactivez l'option
337 |
338 | chrome://flags/#disable-gesture-requirement-for-media-playback
339 |
340 | */
341 |
342 | var text = message.svalue1;
343 | var oAudio = document.getElementById('myaudio');
344 | var launched = false;
345 | oAudio.src = "sounds/Arpeggio.ogg"; // ding dong d'alerte
346 | oAudio.play();
347 | oAudio.onended = function() {
348 | if ( !launched ) {
349 | launched = true;
350 | oAudio.src = "http://www.voxygen.fr/sites/all/modules/voxygen_voices/assets/proxy/index.php?method=redirect&text="+text+"&voice=Fabienne";
351 | oAudio.play();
352 | }
353 | };
354 |
355 | break;
356 |
357 | ////////////////////////////////////////////////////////////////////////////////
358 |
359 | // afficher une page précise suivant le choix d'un switch sélecteur
360 | case "page": // nom du switch sélecteur
361 |
362 | if (message.svalue1 == 10) // sélecteur à 10 %
363 | mySwipe.slide(0); // vers page 1 (la première page est numéroté 0)
364 | if (message.svalue1 == 20)
365 | mySwipe.slide(1); // vers page 2
366 | if (message.svalue1 == 30)
367 | mySwipe.slide(2); // vers page 3
368 | if (message.svalue1 == 40)
369 | mySwipe.slide(3); // vers page 4
370 | if (message.svalue1 == 50)
371 | mySwipe.slide(4); // vers page 5
372 | if (message.svalue1 == 60)
373 | mySwipe.slide(5); // vers page 6
374 | if (message.svalue1 == 70)
375 | mySwipe.slide(6); // vers page 7
376 | if (message.svalue1 == 80)
377 | mySwipe.slide(7); // vers page 8
378 | if (message.svalue1 == 90)
379 | mySwipe.slide(8); // vers page 9
380 | if (message.svalue1 == 100)
381 | mySwipe.slide(9); // vers page 10
382 |
383 | break;
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
393 |
394 |
395 |
396 |
397 |
398 |
399 |
400 |
401 |
402 |
403 |
404 |
405 | }
406 |
407 | }
408 |
409 | // ############################################################################################################
410 | // #### ^^^^^ USER VALUES above ^^^^^ #######
411 | // ############################################################################################################
412 |
413 |
414 |
415 |
416 |
--------------------------------------------------------------------------------
/js/full/swipe.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Swipe 2.2.4
3 | *
4 | * Brad Birdsall
5 | * Copyright 2013, MIT License
6 | *
7 | */
8 |
9 | // if the module has no dependencies, the above pattern can be simplified to
10 | // eslint-disable-next-line no-extra-semi
11 | ;(function (root, factory) {
12 | // eslint-disable-next-line no-undef
13 | if (typeof define === 'function' && define.amd) {
14 | // AMD. Register as an anonymous module.
15 | // eslint-disable-next-line no-undef
16 | define([], function(){
17 | root.Swipe = factory();
18 | return root.Swipe;
19 | });
20 | } else if (typeof module === 'object' && module.exports) {
21 | // Node. Does not work with strict CommonJS, but
22 | // only CommonJS-like environments that support module.exports,
23 | // like Node.
24 | module.exports = factory();
25 | } else {
26 | // Browser globals
27 | root.Swipe = factory();
28 | }
29 | }(this, function () {
30 | // Establish the root object, `window` (`self`) in the browser, `global`
31 | // on the server, or `this` in some virtual machines. We use `self`
32 | // instead of `window` for `WebWorker` support.
33 | var root = typeof self == 'object' && self.self === self && self ||
34 | typeof global == 'object' && global.global === global && global ||
35 | this;
36 |
37 | var _document = root.document;
38 |
39 | function Swipe(container, options) {
40 |
41 | 'use strict';
42 |
43 | options = options || {};
44 |
45 | // setup initial vars
46 | var start = {};
47 | var delta = {};
48 | var isScrolling;
49 |
50 | // setup auto slideshow
51 | var delay = options.auto || 0;
52 | var interval;
53 |
54 | // utilities
55 | // simple no operation function
56 | var noop = function() {};
57 | // offload a functions execution
58 | var offloadFn = function(fn) { setTimeout(fn || noop, 0); };
59 | // Returns a function, that, as long as it continues to be invoked, will not
60 | // be triggered.
61 | var throttle = function (fn, threshhold) {
62 | threshhold = threshhold || 100;
63 | var timeout = null;
64 |
65 | function cancel() {
66 | if (timeout) clearTimeout(timeout);
67 | }
68 |
69 | function throttledFn() {
70 | var context = this;
71 | var args = arguments;
72 | cancel();
73 | timeout = setTimeout(function() {
74 | timeout = null;
75 | fn.apply(context, args);
76 | }, threshhold);
77 | }
78 |
79 | // allow remove throttled timeout
80 | throttledFn.cancel = cancel;
81 |
82 | return throttledFn;
83 | };
84 |
85 | // check browser capabilities
86 | var browser = {
87 | addEventListener: !!root.addEventListener,
88 | // eslint-disable-next-line no-undef
89 | touch: ('ontouchstart' in root) || root.DocumentTouch && _document instanceof DocumentTouch,
90 | transitions: (function(temp) {
91 | var props = ['transitionProperty', 'WebkitTransition', 'MozTransition', 'OTransition', 'msTransition'];
92 | for ( var i in props ) {
93 | if (temp.style[ props[i] ] !== undefined){
94 | return true;
95 | }
96 | }
97 | return false;
98 | })(_document.createElement('swipe'))
99 | };
100 |
101 | // quit if no root element
102 | if (!container) return;
103 |
104 | var element = container.children[0];
105 | var slides, slidePos, width, length;
106 | var index = parseInt(options.startSlide, 10) || 0;
107 | var speed = options.speed || 300;
108 | options.continuous = options.continuous !== undefined ? options.continuous : true;
109 |
110 | // AutoRestart option: auto restart slideshow after user's touch event
111 | options.autoRestart = options.autoRestart !== undefined ? options.autoRestart : false;
112 |
113 | // throttled setup
114 | var throttledSetup = throttle(setup);
115 |
116 | // setup event capturing
117 | var events = {
118 |
119 | handleEvent: function(event) {
120 | switch (event.type) {
121 | case 'mousedown':
122 | case 'touchstart': this.start(event); break;
123 | case 'mousemove':
124 | case 'touchmove': this.move(event); break;
125 | case 'mouseup':
126 | case 'mouseleave':
127 | case 'touchend': this.end(event); break;
128 | case 'webkitTransitionEnd':
129 | case 'msTransitionEnd':
130 | case 'oTransitionEnd':
131 | case 'otransitionend':
132 | case 'transitionend': this.transitionEnd(event); break;
133 | case 'resize': throttledSetup(); break;
134 | }
135 |
136 | if (options.stopPropagation) {
137 | event.stopPropagation();
138 | }
139 | },
140 |
141 | start: function(event) {
142 | var touches;
143 |
144 | if (isMouseEvent(event)) {
145 | touches = event;
146 | event.preventDefault(); // For desktop Safari drag
147 | } else {
148 | touches = event.touches[0];
149 | }
150 |
151 | // measure start values
152 | start = {
153 |
154 | // get initial touch coords
155 | x: touches.pageX,
156 | y: touches.pageY,
157 |
158 | // store time to determine touch duration
159 | time: +new Date()
160 |
161 | };
162 |
163 | // used for testing first move event
164 | isScrolling = undefined;
165 |
166 | // reset delta and end measurements
167 | delta = {};
168 |
169 | // attach touchmove and touchend listeners
170 | if (isMouseEvent(event)) {
171 | element.addEventListener('mousemove', this, false);
172 | element.addEventListener('mouseup', this, false);
173 | element.addEventListener('mouseleave', this, false);
174 | } else {
175 | element.addEventListener('touchmove', this, false);
176 | element.addEventListener('touchend', this, false);
177 | }
178 |
179 | },
180 |
181 | move: function(event) {
182 | var touches;
183 |
184 | if (isMouseEvent(event)) {
185 | touches = event;
186 | } else {
187 | // ensure swiping with one touch and not pinching
188 | if ( event.touches.length > 1 || event.scale && event.scale !== 1) {
189 | return;
190 | }
191 |
192 | if (options.disableScroll) {
193 | event.preventDefault();
194 | }
195 |
196 | touches = event.touches[0];
197 | }
198 |
199 | // measure change in x and y
200 | delta = {
201 | x: touches.pageX - start.x,
202 | y: touches.pageY - start.y
203 | };
204 |
205 | // determine if scrolling test has run - one time test
206 | if ( typeof isScrolling === 'undefined') {
207 | isScrolling = !!( isScrolling || Math.abs(delta.x) < Math.abs(delta.y) );
208 | }
209 |
210 | // if user is not trying to scroll vertically
211 | if (!isScrolling) {
212 |
213 | // prevent native scrolling
214 | event.preventDefault();
215 |
216 | // stop slideshow
217 | stop();
218 |
219 | // increase resistance if first or last slide
220 | if (options.continuous) { // we don't add resistance at the end
221 |
222 | translate(circle(index-1), delta.x + slidePos[circle(index-1)], 0);
223 | translate(index, delta.x + slidePos[index], 0);
224 | translate(circle(index+1), delta.x + slidePos[circle(index+1)], 0);
225 |
226 | } else {
227 |
228 | delta.x =
229 | delta.x /
230 | ( (!index && delta.x > 0 || // if first slide and sliding left
231 | index === slides.length - 1 && // or if last slide and sliding right
232 | delta.x < 0 // and if sliding at all
233 | ) ?
234 | ( Math.abs(delta.x) / width + 1 ) // determine resistance level
235 | : 1 ); // no resistance if false
236 |
237 | // translate 1:1
238 | translate(index-1, delta.x + slidePos[index-1], 0);
239 | translate(index, delta.x + slidePos[index], 0);
240 | translate(index+1, delta.x + slidePos[index+1], 0);
241 | }
242 | }
243 | },
244 |
245 | end: function(event) {
246 |
247 | // measure duration
248 | var duration = +new Date() - start.time;
249 |
250 | // determine if slide attempt triggers next/prev slide
251 | var isValidSlide =
252 | Number(duration) < 250 && // if slide duration is less than 250ms
253 | Math.abs(delta.x) > 20 || // and if slide amt is greater than 20px
254 | Math.abs(delta.x) > width/2; // or if slide amt is greater than half the width
255 |
256 | // determine if slide attempt is past start and end
257 | var isPastBounds =
258 | !index && delta.x > 0 || // if first slide and slide amt is greater than 0
259 | index === slides.length - 1 && delta.x < 0; // or if last slide and slide amt is less than 0
260 |
261 | if (options.continuous) {
262 | isPastBounds = false;
263 | }
264 |
265 | // OLD determine direction of swipe (true:right, false:left)
266 | // determine direction of swipe (1: backward, -1: forward)
267 | var direction = Math.abs(delta.x) / delta.x;
268 |
269 | // if not scrolling vertically
270 | if (!isScrolling) {
271 |
272 | if (isValidSlide && !isPastBounds) {
273 |
274 | // if we're moving right
275 | if (direction < 0) {
276 |
277 | if (options.continuous) { // we need to get the next in this direction in place
278 |
279 | move(circle(index-1), -width, 0);
280 | move(circle(index+2), width, 0);
281 |
282 | } else {
283 | move(index-1, -width, 0);
284 | }
285 |
286 | move(index, slidePos[index]-width, speed);
287 | move(circle(index+1), slidePos[circle(index+1)]-width, speed);
288 | index = circle(index+1);
289 |
290 | } else {
291 | if (options.continuous) { // we need to get the next in this direction in place
292 |
293 | move(circle(index+1), width, 0);
294 | move(circle(index-2), -width, 0);
295 |
296 | } else {
297 | move(index+1, width, 0);
298 | }
299 |
300 | move(index, slidePos[index]+width, speed);
301 | move(circle(index-1), slidePos[circle(index-1)]+width, speed);
302 | index = circle(index-1);
303 | }
304 |
305 | runCallback(getPos(), slides[index], direction);
306 |
307 | } else {
308 |
309 | if (options.continuous) {
310 |
311 | move(circle(index-1), -width, speed);
312 | move(index, 0, speed);
313 | move(circle(index+1), width, speed);
314 |
315 | } else {
316 |
317 | move(index-1, -width, speed);
318 | move(index, 0, speed);
319 | move(index+1, width, speed);
320 | }
321 | }
322 | }
323 |
324 | // kill touchmove and touchend event listeners until touchstart called again
325 | if (isMouseEvent(event)) {
326 | element.removeEventListener('mousemove', events, false);
327 | element.removeEventListener('mouseup', events, false);
328 | element.removeEventListener('mouseleave', events, false);
329 | } else {
330 | element.removeEventListener('touchmove', events, false);
331 | element.removeEventListener('touchend', events, false);
332 | }
333 |
334 | },
335 |
336 | transitionEnd: function(event) {
337 | var currentIndex = parseInt(event.target.getAttribute('data-index'), 10);
338 | if (currentIndex === index) {
339 | if (delay || options.autoRestart) restart();
340 |
341 | runTransitionEnd(getPos(), slides[index]);
342 | }
343 | }
344 | };
345 |
346 | // trigger setup
347 | setup();
348 |
349 | // start auto slideshow if applicable
350 | if (delay) begin();
351 |
352 | // Expose the Swipe API
353 | return {
354 | // initialize
355 | setup: setup,
356 |
357 | // go to slide
358 | slide: function(to, speed) {
359 | stop();
360 | slide(to, speed);
361 | },
362 |
363 | // move to previous
364 | prev: function() {
365 | stop();
366 | prev();
367 | },
368 |
369 | // move to next
370 | next: function() {
371 | stop();
372 | next();
373 | },
374 |
375 | // Restart slideshow
376 | restart: restart,
377 |
378 | // cancel slideshow
379 | stop: stop,
380 |
381 | // return current index position
382 | getPos: getPos,
383 |
384 | // return total number of slides
385 | getNumSlides: function() { return length; },
386 |
387 | // completely remove swipe
388 | kill: kill
389 | };
390 |
391 | // remove all event listeners
392 | function detachEvents() {
393 | if (browser.addEventListener) {
394 | // remove current event listeners
395 | element.removeEventListener('touchstart', events, false);
396 | element.removeEventListener('mousedown', events, false);
397 | element.removeEventListener('webkitTransitionEnd', events, false);
398 | element.removeEventListener('msTransitionEnd', events, false);
399 | element.removeEventListener('oTransitionEnd', events, false);
400 | element.removeEventListener('otransitionend', events, false);
401 | element.removeEventListener('transitionend', events, false);
402 | root.removeEventListener('resize', events, false);
403 | } else {
404 | root.onresize = null;
405 | }
406 | }
407 |
408 | // add event listeners
409 | function attachEvents() {
410 | if (browser.addEventListener) {
411 |
412 | // set touchstart event on element
413 | if (browser.touch) {
414 | element.addEventListener('touchstart', events, false);
415 | }
416 |
417 | if (options.draggable) {
418 | element.addEventListener('mousedown', events, false);
419 | }
420 |
421 | if (browser.transitions) {
422 | element.addEventListener('webkitTransitionEnd', events, false);
423 | element.addEventListener('msTransitionEnd', events, false);
424 | element.addEventListener('oTransitionEnd', events, false);
425 | element.addEventListener('otransitionend', events, false);
426 | element.addEventListener('transitionend', events, false);
427 | }
428 |
429 | // set resize event on window
430 | root.addEventListener('resize', events, false);
431 |
432 | } else {
433 | root.onresize = throttledSetup; // to play nice with old IE
434 | }
435 | }
436 |
437 | function setup() {
438 | // cache slides
439 | slides = element.children;
440 | length = slides.length;
441 |
442 | // set continuous to false if only one slide
443 | if (slides.length < 2) {
444 | options.continuous = false;
445 | }
446 |
447 | // special case if two slides
448 | if (browser.transitions && options.continuous && slides.length < 3) {
449 | var clone0 = slides[0].cloneNode(true);
450 | var clone1 = element.children[1].cloneNode(true);
451 | element.appendChild(clone0);
452 | element.appendChild(clone1);
453 |
454 | // tag these slides as clones (to remove them on kill)
455 | clone0.setAttribute('data-cloned', true);
456 | clone1.setAttribute('data-cloned', true);
457 |
458 | slides = element.children;
459 | }
460 |
461 | // create an array to store current positions of each slide
462 | slidePos = new Array(slides.length);
463 |
464 | // determine width of each slide
465 | width = container.getBoundingClientRect().width || container.offsetWidth;
466 |
467 | element.style.width = (slides.length * width * 2) + 'px';
468 |
469 | // stack elements
470 | var pos = slides.length;
471 | while(pos--) {
472 | var slide = slides[pos];
473 |
474 | slide.style.width = width + 'px';
475 | slide.setAttribute('data-index', pos);
476 |
477 | if (browser.transitions) {
478 | slide.style.left = (pos * -width) + 'px';
479 | move(pos, index > pos ? -width : (index < pos ? width : 0), 0);
480 | }
481 | }
482 |
483 | // reposition elements before and after index
484 | if (options.continuous && browser.transitions) {
485 | move(circle(index-1), -width, 0);
486 | move(circle(index+1), width, 0);
487 | }
488 |
489 | if (!browser.transitions) {
490 | element.style.left = (index * -width) + 'px';
491 | }
492 |
493 | container.style.visibility = 'visible';
494 |
495 | // reinitialize events
496 | detachEvents();
497 | attachEvents();
498 | }
499 |
500 | function prev() {
501 | if (options.continuous) {
502 | slide(index-1);
503 | }
504 | else if (index) {
505 | slide(index-1);
506 | }
507 | }
508 |
509 | function next() {
510 |
511 | if (options.continuous) {
512 | slide(index+1);
513 | } else if (index < slides.length - 1) {
514 | slide(index+1);
515 | }
516 | }
517 |
518 | function runCallback(pos, index, dir) {
519 | if (options.callback) {
520 | options.callback(pos, index, dir);
521 | }
522 | }
523 |
524 | function runTransitionEnd(pos, index) {
525 | if (options.transitionEnd) {
526 | options.transitionEnd(pos, index);
527 | }
528 | }
529 |
530 | function circle(index) {
531 |
532 | // a simple positive modulo using slides.length
533 | return (slides.length + (index % slides.length)) % slides.length;
534 | }
535 |
536 | function getPos() {
537 | // Fix for the clone issue in the event of 2 slides
538 | var currentIndex = index;
539 |
540 | if (currentIndex >= length) {
541 | currentIndex = currentIndex - length;
542 | }
543 |
544 | return currentIndex;
545 | }
546 |
547 | function slide(to, slideSpeed) {
548 |
549 | // ensure to is of type 'number'
550 | to = typeof to !== 'number' ? parseInt(to, 10) : to;
551 |
552 | // do nothing if already on requested slide
553 | if (index === to) return;
554 |
555 | if (browser.transitions) {
556 |
557 | var direction = Math.abs(index-to) / (index-to); // 1: backward, -1: forward
558 |
559 | // get the actual position of the slide
560 | if (options.continuous) {
561 | var natural_direction = direction;
562 | direction = -slidePos[circle(to)] / width;
563 |
564 | // if going forward but to < index, use to = slides.length + to
565 | // if going backward but to > index, use to = -slides.length + to
566 | if (direction !== natural_direction) {
567 | to = -direction * slides.length + to;
568 | }
569 |
570 | }
571 |
572 | var diff = Math.abs(index-to) - 1;
573 |
574 | // move all the slides between index and to in the right direction
575 | while (diff--) {
576 | move( circle((to > index ? to : index) - diff - 1), width * direction, 0);
577 | }
578 |
579 | to = circle(to);
580 |
581 | move(index, width * direction, slideSpeed || speed);
582 | move(to, 0, slideSpeed || speed);
583 |
584 | if (options.continuous) { // we need to get the next in place
585 | move(circle(to - direction), -(width * direction), 0);
586 | }
587 |
588 | } else {
589 |
590 | to = circle(to);
591 | animate(index * -width, to * -width, slideSpeed || speed);
592 | // no fallback for a circular continuous if the browser does not accept transitions
593 | }
594 |
595 | index = to;
596 | offloadFn(function() {
597 | runCallback(getPos(), slides[index], direction);
598 | });
599 | }
600 |
601 | function move(index, dist, speed) {
602 | translate(index, dist, speed);
603 | slidePos[index] = dist;
604 | }
605 |
606 | function translate(index, dist, speed) {
607 |
608 | var slide = slides[index];
609 | var style = slide && slide.style;
610 |
611 | if (!style) return;
612 |
613 | style.webkitTransitionDuration =
614 | style.MozTransitionDuration =
615 | style.msTransitionDuration =
616 | style.OTransitionDuration =
617 | style.transitionDuration = speed + 'ms';
618 |
619 | style.webkitTransform = 'translate(' + dist + 'px,0)' + 'translateZ(0)';
620 | style.msTransform =
621 | style.MozTransform =
622 | style.OTransform = 'translateX(' + dist + 'px)';
623 |
624 | }
625 |
626 | function animate(from, to, speed) {
627 |
628 | // if not an animation, just reposition
629 | if (!speed) {
630 | element.style.left = to + 'px';
631 | return;
632 | }
633 |
634 | var start = +new Date();
635 |
636 | var timer = setInterval(function() {
637 | var timeElap = +new Date() - start;
638 |
639 | if (timeElap > speed) {
640 |
641 | element.style.left = to + 'px';
642 |
643 | if (delay || options.autoRestart) restart();
644 |
645 | runTransitionEnd(getPos(), slides[index]);
646 |
647 | clearInterval(timer);
648 |
649 | return;
650 | }
651 |
652 | element.style.left = (( (to - from) * (Math.floor((timeElap / speed) * 100) / 100) ) + from) + 'px';
653 | }, 4);
654 |
655 | }
656 |
657 | /* function begin() {
658 | interval = setTimeout(next, delay);
659 | } */
660 | function begin() {
661 |
662 | if (options.direction == 'next') {
663 | interval = setTimeout(next, delay);
664 | } else if (options.direction == 'index') {
665 | interval = setTimeout(function(){slide(0,speed);}, delay);
666 | }
667 | }
668 |
669 | function stop() {
670 | delay = 0;
671 | clearTimeout(interval);
672 | }
673 |
674 | function restart() {
675 | stop();
676 | delay = options.auto || 0;
677 | begin();
678 | }
679 |
680 | function isMouseEvent(e) {
681 | return /^mouse/.test(e.type);
682 | }
683 |
684 | function kill() {
685 | // cancel slideshow
686 | stop();
687 |
688 | // remove inline styles
689 | container.style.visibility = '';
690 |
691 | // reset element
692 | element.style.width = '';
693 | element.style.left = '';
694 |
695 | // reset slides
696 | var pos = slides.length;
697 | while (pos--) {
698 |
699 | if (browser.transitions) {
700 | translate(pos, 0, 0);
701 | }
702 |
703 | var slide = slides[pos];
704 |
705 | // if the slide is tagged as clone, remove it
706 | if (slide.getAttribute('data-cloned')) {
707 | var _parent = slide.parentElement;
708 | _parent.removeChild(slide);
709 | }
710 |
711 | // remove styles
712 | slide.style.width = '';
713 | slide.style.left = '';
714 |
715 | slide.style.webkitTransitionDuration =
716 | slide.style.MozTransitionDuration =
717 | slide.style.msTransitionDuration =
718 | slide.style.OTransitionDuration =
719 | slide.style.transitionDuration = '';
720 |
721 | slide.style.webkitTransform =
722 | slide.style.msTransform =
723 | slide.style.MozTransform =
724 | slide.style.OTransform = '';
725 |
726 | // remove custom attributes (?)
727 | // slide.removeAttribute('data-index');
728 | }
729 |
730 | // remove all events
731 | detachEvents();
732 |
733 | // remove throttled function timeout
734 | throttledSetup.cancel();
735 | }
736 | }
737 |
738 | if ( root.jQuery || root.Zepto ) {
739 | (function($) {
740 | $.fn.Swipe = function(params) {
741 | return this.each(function() {
742 | $(this).data('Swipe', new Swipe($(this)[0], params));
743 | });
744 | };
745 | })( root.jQuery || root.Zepto );
746 | }
747 |
748 | return Swipe;
749 | }));
--------------------------------------------------------------------------------