Projekt

Obecné

Profil

« Předchozí | Další » 

Revize a48642fb

Přidáno uživatelem Jakub Vašta před asi 4 roky(ů)

Re #7940
+ heatmap animace - js kód
+ pause tlačítko - přidání stylu, změna

Zobrazit rozdíly:

website/public/css/style.css
1
@import url(https://fonts.googleapis.com/css2?family=Be+Vietnam:wght@400;600;700;800&display=swap);body,html{font-family:"Be Vietnam",sans-serif;color:#fff;position:relative;height:96.2%;background:#242c6b}@media (max-width:767.98px){body.intro,html.intro{height:auto}}header{height:70px;background:#0048a9}header .logo{width:450px;height:181px;position:absolute;top:70px;left:0;z-index:2;background:url(../img/header-bg.png)}@media (max-width:1400px){header .logo{display:none}}header .logo img{height:100px;position:relative;top:-50px;left:50px}header nav.navbar{height:70px;position:relative}header .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgb(255,255,255)' stroke-width='3' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E")}@media (min-width:1401px){header .navbar-brand.shifted{position:absolute;top:0;left:450px}}@media (max-width:1199.98px){header .navbar-brand.shifted{left:20px}}@media (max-width:991.98px){header #navigation{width:100%;padding:20px;position:absolute;top:70px;left:0;z-index:1001;opacity:.9;background:#004fb3}}header .nav-item{margin-right:40px}@media (max-width:1480px){header .nav-item{margin-right:30px}}@media (max-width:1440px){header .nav-item{margin-right:15px}}@media (max-width:1199.98px){header .nav-item{margin-right:30px}}@media (max-width:991.98px){header .nav-item{margin-right:0}}header .nav-item .active{font-weight:800}header .nav-item.button .nav-link{padding-left:22px;padding-right:22px;border:1px solid #fff;border-radius:20px}header .nav-item.button .nav-link:hover{background:#004fb3}header .navbar-button{padding:.5rem 22px;margin-right:40px;border:1px solid #fff;border-radius:20px;text-decoration:none}@media (max-width:991.98px){header .navbar-button{display:none}}header .navbar-button:hover{background:#004fb3}header .btn-secondary{height:100%;font-size:16px;text-transform:uppercase;font-weight:800;letter-spacing:.4px;border-radius:0;border:#0048a9;background:#004fb3}header .btn-secondary:hover{background:#0048a9!important}@media (max-width:991.98px){header.map .navbar-nav{width:100%}}header.map form{display:-webkit-box;display:-ms-flexbox;display:flex}header.map label{margin:0 0 0 15px;font-size:16px;font-weight:800;letter-spacing:.4px}header.map .custom-select,header.map input{letter-spacing:.4px;color:#fff;border-color:#0048a9;background:#0048a9}header.map .custom-select:hover,header.map input:hover{background:#004fb3}header.map .nav-item{margin:0;border-right:1px solid #1c6cc0}@media (max-width:991.98px){header.map .nav-item{margin-bottom:20px;border:0}}header.map .nav-item:nth-of-type(1){margin-left:100px}@media (max-width:1199.98px){header.map .nav-item:nth-of-type(1){margin-left:0}}header.map .nav-item:nth-of-type(1),header.map .nav-item:nth-of-type(2),header.map .nav-item:nth-of-type(3){width:300px}@media (max-width:1500px){header.map .nav-item:nth-of-type(1),header.map .nav-item:nth-of-type(2),header.map .nav-item:nth-of-type(3){width:280px}}@media (max-width:1400px){header.map .nav-item:nth-of-type(1),header.map .nav-item:nth-of-type(2),header.map .nav-item:nth-of-type(3){width:230px}}@media (max-width:1400px){header.map .nav-item:nth-of-type(1),header.map .nav-item:nth-of-type(2),header.map .nav-item:nth-of-type(3){max-width:230px;width:auto}}@media (max-width:991.98px){header.map .nav-item:nth-of-type(1),header.map .nav-item:nth-of-type(2),header.map .nav-item:nth-of-type(3){max-width:none}}header.map .nav-item:last-of-type{display:none;border:0}@media (max-width:991.98px){header.map .nav-item:last-of-type{display:block;width:100%;margin:30px 10px 0 0}header.map .nav-item:last-of-type h2{width:100%}}@media (max-width:991.98px){header.map .nav-item .btn{width:100%}}h1{text-transform:uppercase;font-size:21px;font-weight:700;letter-spacing:.53px}@media (min-width:992px){h1{line-height:55px}}h2{font-size:16px;font-weight:400;letter-spacing:.4px}@media (min-width:992px){h2{margin:0}}h3{font-size:38px;font-weight:800;letter-spacing:.95px}@media (max-width:575.98px){h3{font-size:28px}}a{color:#fff;outline:0}a:hover{color:#fff}hr{width:300px;text-align:left;margin:30px 0;border-top:2px solid #fff}@media (max-width:1199.98px){hr{width:90%}}@media (max-width:575.98px){hr{margin:15px 0}}.swiper-container{height:100%;position:relative}.swiper-slide{z-index:-1000;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.swiper-slide.slide-bg-1{background:url(../img/bg-1.jpg) no-repeat bottom center;background-size:cover}.swiper-slide.slide-bg-2{background:url(../img/bg-2.jpg) no-repeat bottom center;background-size:cover}.swiper-slide.slide-bg-3{background:url(../img/bg-3.jpg) no-repeat bottom center;background-size:cover}.swiper-slide.slide-bg-3 .slide-text{width:750px}@media (max-width:1199.98px){.swiper-slide.slide-bg-3 .slide-text{width:100%}}.slide-text{width:600px;padding-bottom:160px;position:relative}@media (max-width:1199.98px){.slide-text{width:100%}}@media (max-width:1199.98px){.slide-text{padding-bottom:80px}}.slide-text .slide-index{display:inline-block;padding-bottom:20px;font-size:72px;font-weight:800}@media (max-width:575.98px){.slide-text .slide-index{padding-bottom:10px;font-size:48px}}.slide-text .btn-primary:after{content:"";display:inline-block;width:10px;height:16px;position:absolute;top:16px;right:20px;background:url(../img/btn-play.svg) no-repeat top right}.slide-text p{font-size:18px;font-weight:600}@media (max-width:575.98px){.slide-text p{font-size:16px}}.swiper-pagination-buttons{width:200px;height:56px;padding:6px;position:absolute;right:150px;bottom:20px;z-index:1;border-radius:100px;background:#0b155a}@media (max-width:1199.98px){.swiper-pagination-buttons{right:20px}}@media (max-width:767.98px){.swiper-pagination-buttons{width:120px}}.swiper-pagination-buttons .btn-next,.swiper-pagination-buttons .btn-prev{display:inline-block;width:45px;height:45px;position:relative;border-radius:50%;border:2px solid #fff}.swiper-pagination-buttons .btn-next:after,.swiper-pagination-buttons .btn-prev:after{content:"";display:inline-block;width:7px;height:12px;position:absolute;top:calc(50% - 6px);left:calc(50% - 4px)}.swiper-pagination-buttons .btn-prev:after{background:url(../img/btn-prev.svg) no-repeat top right}.swiper-pagination-buttons .btn-next{float:right}.swiper-pagination-buttons .btn-next:after{background:url(../img/btn-next.svg) no-repeat top right}.swiper-pagination-bullets{display:inline-block;width:auto!important;height:30px;position:absolute;left:20px!important;bottom:30px!important;border-radius:100px;opacity:.8;background:#0b155a}@media (min-width:992px){.swiper-pagination-bullets{left:50%!important;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}}@media (max-width:575.98px){.swiper-pagination-bullets{display:none}}.swiper-pagination-bullets:before{content:"";width:100px;position:absolute;top:13px;left:15px;z-index:1;border-top:2px solid #fff}.swiper-pagination-bullets .swiper-pagination-bullet{width:20px;height:20px;position:relative;margin:4px 15px!important;opacity:1;border:2px solid #0b155a;background:#0b155a}.swiper-pagination-bullets .swiper-pagination-bullet:before{content:"";display:inline-block;width:6px;height:6px;position:absolute;top:5px;left:5px;border-radius:50%;background:#fff}.swiper-pagination-bullets .swiper-pagination-bullet:first-of-type{margin-left:5px!important}.swiper-pagination-bullets .swiper-pagination-bullet:last-of-type{margin-right:5px!important}.swiper-pagination-bullets .swiper-pagination-bullet-active{border:2px solid #fff}.btn-primary{width:300px;height:50px;line-height:32px;position:relative;padding-left:30px;margin-top:40px;text-align:left;font-size:16px;text-transform:uppercase;letter-spacing:.4px;border-radius:30px;border:1px solid #0b155a;background:#0b155a}.btn-primary:active,.btn-primary:focus,.btn-primary:hover{border:1px solid #0048a9;background:#0048a9!important}@media (max-width:575.98px){.btn-primary{width:100%;max-width:270px;height:auto;margin-top:20px}}.btn-secondary{background:#0b155a}.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover{background:#7378a0!important}.map-point{width:50px;height:50px;z-index:1;position:absolute;border-radius:50%;cursor:pointer;border:2px solid #fff}@media (max-width:767.98px){.map-point{display:none}}.map-point:before{content:"";display:inline-block;width:16px;height:16px;position:absolute;top:calc(50% - 8px);left:calc(50% - 8px);background:url(../img/map-point-plus.svg) no-repeat}.map-point:hover:before{z-index:1;top:calc(50% - 1px);background:url(../img/map-point-minus.svg) no-repeat}.map-point:hover .desc{display:block;width:210px;padding:10px 20px;z-index:0;opacity:.75;border-radius:25px 0 25px 0;background:#0b155a}.map-point .desc{display:none}.map-point p{font-size:14px;font-weight:400}.map-point p:last-of-type{margin-bottom:10px}.map-point strong{display:inline-block;width:100%;padding:0 0 20px 40px;font-size:16px}.map-point .circle{width:50px;height:50px;position:absolute;top:-2px;left:-2px;border-radius:50%;border:2px solid #fff}.map-point.point-1{bottom:12%;right:-75%}.map-point.point-2{top:21%;right:-92%}.map-point.point-3{top:22%;right:-92%}#heatmap{height:100%}.map-locations{position:absolute;top:105px;right:50px;z-index:1000;border-radius:22px;background-color:rgba(11,21,90,.7)}@media (max-width:991.98px){.map-locations{top:90px;right:20px}}.map-locations .menu{display:inline-block;position:relative;padding:10px 60px 13px 16px;text-decoration:none;border-radius:50px;opacity:1;background:#0b155a}@media (max-width:575.98px){.map-locations .menu{min-width:280px;width:100%;padding-bottom:16px;font-size:14px}}.map-locations .menu .circle{display:inline-block;width:40px;height:40px;position:absolute;top:3px;right:3px;border-radius:50%;border:2px solid #fff}.map-locations .menu .circle:after{content:"";display:inline-block;width:16px;height:16px;position:absolute;top:calc(50% - 8px);left:calc(50% - 8px);background:url(../img/map-point-plus.svg) no-repeat}.map-locations .locations{z-index:1000}.map-locations .locations ul{margin-top:10px;padding-left:36px;padding-right:20px;font-size:15px;list-style-image:url(../img/li-bullet.svg)}@media (max-width:575.98px){.map-locations .locations ul{font-size:13.5px}}.map-locations .locations li{margin-bottom:10px;cursor:pointer}.player{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);bottom:-40px;z-index:1000}@media (max-width:575.98px){.player{bottom:-30px}}.player .next,.player .play,.player .prev{display:inline-block;width:42px;height:42px;margin-right:20px;position:relative;border-radius:50%;opacity:.7;border:2px solid #fff;-webkit-box-shadow:0 0 0 4px #0b155a;box-shadow:0 0 0 4px #0b155a;background:#0b155a;cursor:pointer}.player .next:hover,.player .play:hover,.player .prev:hover{opacity:1}.player .next:after,.player .play:after,.player .prev:after{content:"";display:inline-block;width:7px;height:12px;position:absolute;top:calc(50% - 6px);left:calc(50% - 4px)}.player .play{width:57px;height:57px;opacity:1}.player .play:hover{opacity:.7}.player .play:after{width:10px;height:16px;top:calc(50% - 8px);left:calc(50% - 2px);background:url(../img/btn-play.svg) no-repeat top right}.player .next:after{background:url(../img/btn-next.svg) no-repeat top right}.player .prev:after{background:url(../img/btn-prev.svg) no-repeat top right}.player .timeline{display:-webkit-box;display:-ms-flexbox;display:flex;height:30px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;position:relative;padding:0 10px;border-radius:100px;background-color:rgba(11,21,90,.7)}@media (max-width:991.98px){.player .timeline{padding:0}}@media (max-width:991.98px){.player .timeline .hour{display:none}}.player .timeline .hour:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:#fff}.player .timeline .hour:after{content:"";display:inline-block;position:relative;top:-2px;width:20px;height:2px;background:#fff}.player .timeline .end-dot:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:#fff}@media (max-width:991.98px){.player .timeline .end-dot:before{display:none}}.player .time{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:64px;font-size:15px;padding:3px 0 4px 0;z-index:1000;border-radius:15px;background:#0b155a}@media (min-width:992px){.player .time{position:absolute}.player .time.hour-0{left:0}.player .time.hour-1{left:25px}.player .time.hour-2{left:50px}.player .time.hour-3{left:75px}.player .time.hour-4{left:100px}.player .time.hour-5{left:125px}.player .time.hour-6{left:150px}.player .time.hour-7{left:175px}.player .time.hour-8{left:200px}.player .time.hour-9{left:225px}.player .time.hour-10{left:250px}.player .time.hour-11{left:275px}.player .time.hour-12{left:300px}.player .time.hour-13{left:325px}.player .time.hour-14{left:350px}.player .time.hour-15{left:375px}.player .time.hour-16{left:400px}.player .time.hour-17{left:425px}.player .time.hour-18{left:450px}.player .time.hour-19{left:475px}.player .time.hour-20{left:500px}.player .time.hour-21{left:525px}.player .time.hour-22{left:550px}.player .time.hour-23{left:585px}}.slide-background{width:650px;height:290px;z-index:1;position:absolute;bottom:0;left:0;background:url(../img/footer-bg.svg) no-repeat}@media (max-width:575.98px){.slide-background{width:320px;height:143px;background-size:100%}}.logos-partners{margin-top:40px}.logos-partners a{text-decoration:none}.logos-partners a img{margin-left:50px;height:80px}@media only screen and (max-width:430px){.logos-partners a img{height:70px;margin-left:0}}@media only screen and (max-width:340px){.logos-partners a img{height:60px}}.logos-partners a:first-of-type img{margin-left:0}
1
@import url(https://fonts.googleapis.com/css2?family=Be+Vietnam:wght@400;600;700;800&display=swap);body,html{font-family:"Be Vietnam",sans-serif;color:#fff;position:relative;height:96.2%;background:#242c6b}@media (max-width:767.98px){body.intro,html.intro{height:auto}}header{height:70px;background:#0048a9}header .logo{width:450px;height:181px;position:absolute;top:70px;left:0;z-index:2;background:url(../img/header-bg.png)}@media (max-width:1400px){header .logo{display:none}}header .logo img{height:100px;position:relative;top:-50px;left:50px}header nav.navbar{height:70px;position:relative}header .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgb(255,255,255)' stroke-width='3' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E")}@media (min-width:1401px){header .navbar-brand.shifted{position:absolute;top:0;left:450px}}@media (max-width:1199.98px){header .navbar-brand.shifted{left:20px}}@media (max-width:991.98px){header #navigation{width:100%;padding:20px;position:absolute;top:70px;left:0;z-index:1001;opacity:.9;background:#004fb3}}header .nav-item{margin-right:40px}@media (max-width:1480px){header .nav-item{margin-right:30px}}@media (max-width:1440px){header .nav-item{margin-right:15px}}@media (max-width:1199.98px){header .nav-item{margin-right:30px}}@media (max-width:991.98px){header .nav-item{margin-right:0}}header .nav-item .active{font-weight:800}header .nav-item.button .nav-link{padding-left:22px;padding-right:22px;border:1px solid #fff;border-radius:20px}header .nav-item.button .nav-link:hover{background:#004fb3}header .navbar-button{padding:.5rem 22px;margin-right:40px;border:1px solid #fff;border-radius:20px;text-decoration:none}@media (max-width:991.98px){header .navbar-button{display:none}}header .navbar-button:hover{background:#004fb3}header .btn-secondary{height:100%;font-size:16px;text-transform:uppercase;font-weight:800;letter-spacing:.4px;border-radius:0;border:#0048a9;background:#004fb3}header .btn-secondary:hover{background:#0048a9!important}@media (max-width:991.98px){header.map .navbar-nav{width:100%}}header.map form{display:-webkit-box;display:-ms-flexbox;display:flex}header.map label{margin:0 0 0 15px;font-size:16px;font-weight:800;letter-spacing:.4px}header.map .custom-select,header.map input{letter-spacing:.4px;color:#fff;border-color:#0048a9;background:#0048a9}header.map .custom-select:hover,header.map input:hover{background:#004fb3}header.map .nav-item{margin:0;border-right:1px solid #1c6cc0}@media (max-width:991.98px){header.map .nav-item{margin-bottom:20px;border:0}}header.map .nav-item:nth-of-type(1){margin-left:100px}@media (max-width:1199.98px){header.map .nav-item:nth-of-type(1){margin-left:0}}header.map .nav-item:nth-of-type(1),header.map .nav-item:nth-of-type(2),header.map .nav-item:nth-of-type(3){width:300px}@media (max-width:1500px){header.map .nav-item:nth-of-type(1),header.map .nav-item:nth-of-type(2),header.map .nav-item:nth-of-type(3){width:280px}}@media (max-width:1400px){header.map .nav-item:nth-of-type(1),header.map .nav-item:nth-of-type(2),header.map .nav-item:nth-of-type(3){width:230px}}@media (max-width:1400px){header.map .nav-item:nth-of-type(1),header.map .nav-item:nth-of-type(2),header.map .nav-item:nth-of-type(3){max-width:230px;width:auto}}@media (max-width:991.98px){header.map .nav-item:nth-of-type(1),header.map .nav-item:nth-of-type(2),header.map .nav-item:nth-of-type(3){max-width:none}}header.map .nav-item:last-of-type{display:none;border:0}@media (max-width:991.98px){header.map .nav-item:last-of-type{display:block;width:100%;margin:30px 10px 0 0}header.map .nav-item:last-of-type h2{width:100%}}@media (max-width:991.98px){header.map .nav-item .btn{width:100%}}h1{text-transform:uppercase;font-size:21px;font-weight:700;letter-spacing:.53px}@media (min-width:992px){h1{line-height:55px}}h2{font-size:16px;font-weight:400;letter-spacing:.4px}@media (min-width:992px){h2{margin:0}}h3{font-size:38px;font-weight:800;letter-spacing:.95px}@media (max-width:575.98px){h3{font-size:28px}}a{color:#fff;outline:0}a:hover{color:#fff}hr{width:300px;text-align:left;margin:30px 0;border-top:2px solid #fff}@media (max-width:1199.98px){hr{width:90%}}@media (max-width:575.98px){hr{margin:15px 0}}.swiper-container{height:100%;position:relative}.swiper-slide{z-index:-1000;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.swiper-slide.slide-bg-1{background:url(../img/bg-1.jpg) no-repeat bottom center;background-size:cover}.swiper-slide.slide-bg-2{background:url(../img/bg-2.jpg) no-repeat bottom center;background-size:cover}.swiper-slide.slide-bg-3{background:url(../img/bg-3.jpg) no-repeat bottom center;background-size:cover}.swiper-slide.slide-bg-3 .slide-text{width:750px}@media (max-width:1199.98px){.swiper-slide.slide-bg-3 .slide-text{width:100%}}.slide-text{width:600px;padding-bottom:160px;position:relative}@media (max-width:1199.98px){.slide-text{width:100%}}@media (max-width:1199.98px){.slide-text{padding-bottom:80px}}.slide-text .slide-index{display:inline-block;padding-bottom:20px;font-size:72px;font-weight:800}@media (max-width:575.98px){.slide-text .slide-index{padding-bottom:10px;font-size:48px}}.slide-text .btn-primary:after{content:"";display:inline-block;width:10px;height:16px;position:absolute;top:16px;right:20px;background:url(../img/btn-play.svg) no-repeat top right}.slide-text p{font-size:18px;font-weight:600}@media (max-width:575.98px){.slide-text p{font-size:16px}}.swiper-pagination-buttons{width:200px;height:56px;padding:6px;position:absolute;right:150px;bottom:20px;z-index:1;border-radius:100px;background:#0b155a}@media (max-width:1199.98px){.swiper-pagination-buttons{right:20px}}@media (max-width:767.98px){.swiper-pagination-buttons{width:120px}}.swiper-pagination-buttons .btn-next,.swiper-pagination-buttons .btn-prev{display:inline-block;width:45px;height:45px;position:relative;border-radius:50%;border:2px solid #fff}.swiper-pagination-buttons .btn-next:after,.swiper-pagination-buttons .btn-prev:after{content:"";display:inline-block;width:7px;height:12px;position:absolute;top:calc(50% - 6px);left:calc(50% - 4px)}.swiper-pagination-buttons .btn-prev:after{background:url(../img/btn-prev.svg) no-repeat top right}.swiper-pagination-buttons .btn-next{float:right}.swiper-pagination-buttons .btn-next:after{background:url(../img/btn-next.svg) no-repeat top right}.swiper-pagination-bullets{display:inline-block;width:auto!important;height:30px;position:absolute;left:20px!important;bottom:30px!important;border-radius:100px;opacity:.8;background:#0b155a}@media (min-width:992px){.swiper-pagination-bullets{left:50%!important;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}}@media (max-width:575.98px){.swiper-pagination-bullets{display:none}}.swiper-pagination-bullets:before{content:"";width:100px;position:absolute;top:13px;left:15px;z-index:1;border-top:2px solid #fff}.swiper-pagination-bullets .swiper-pagination-bullet{width:20px;height:20px;position:relative;margin:4px 15px!important;opacity:1;border:2px solid #0b155a;background:#0b155a}.swiper-pagination-bullets .swiper-pagination-bullet:before{content:"";display:inline-block;width:6px;height:6px;position:absolute;top:5px;left:5px;border-radius:50%;background:#fff}.swiper-pagination-bullets .swiper-pagination-bullet:first-of-type{margin-left:5px!important}.swiper-pagination-bullets .swiper-pagination-bullet:last-of-type{margin-right:5px!important}.swiper-pagination-bullets .swiper-pagination-bullet-active{border:2px solid #fff}.btn-primary{width:300px;height:50px;line-height:32px;position:relative;padding-left:30px;margin-top:40px;text-align:left;font-size:16px;text-transform:uppercase;letter-spacing:.4px;border-radius:30px;border:1px solid #0b155a;background:#0b155a}.btn-primary:active,.btn-primary:focus,.btn-primary:hover{border:1px solid #0048a9;background:#0048a9!important}@media (max-width:575.98px){.btn-primary{width:100%;max-width:270px;height:auto;margin-top:20px}}.btn-secondary{background:#0b155a}.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover{background:#7378a0!important}.map-point{width:50px;height:50px;z-index:1;position:absolute;border-radius:50%;cursor:pointer;border:2px solid #fff}@media (max-width:767.98px){.map-point{display:none}}.map-point:before{content:"";display:inline-block;width:16px;height:16px;position:absolute;top:calc(50% - 8px);left:calc(50% - 8px);background:url(../img/map-point-plus.svg) no-repeat}.map-point:hover:before{z-index:1;top:calc(50% - 1px);background:url(../img/map-point-minus.svg) no-repeat}.map-point:hover .desc{display:block;width:210px;padding:10px 20px;z-index:0;opacity:.75;border-radius:25px 0 25px 0;background:#0b155a}.map-point .desc{display:none}.map-point p{font-size:14px;font-weight:400}.map-point p:last-of-type{margin-bottom:10px}.map-point strong{display:inline-block;width:100%;padding:0 0 20px 40px;font-size:16px}.map-point .circle{width:50px;height:50px;position:absolute;top:-2px;left:-2px;border-radius:50%;border:2px solid #fff}.map-point.point-1{bottom:12%;right:-75%}.map-point.point-2{top:21%;right:-92%}.map-point.point-3{top:22%;right:-92%}#heatmap{height:100%}.map-locations{position:absolute;top:105px;right:50px;z-index:1000;border-radius:22px;background-color:rgba(11,21,90,.7)}@media (max-width:991.98px){.map-locations{top:90px;right:20px}}.map-locations .menu{display:inline-block;position:relative;padding:10px 60px 13px 16px;text-decoration:none;border-radius:50px;opacity:1;background:#0b155a}@media (max-width:575.98px){.map-locations .menu{min-width:280px;width:100%;padding-bottom:16px;font-size:14px}}.map-locations .menu .circle{display:inline-block;width:40px;height:40px;position:absolute;top:3px;right:3px;border-radius:50%;border:2px solid #fff}.map-locations .menu .circle:after{content:"";display:inline-block;width:16px;height:16px;position:absolute;top:calc(50% - 8px);left:calc(50% - 8px);background:url(../img/map-point-plus.svg) no-repeat}.map-locations .locations{z-index:1000}.map-locations .locations ul{margin-top:10px;padding-left:36px;padding-right:20px;font-size:15px;list-style-image:url(../img/li-bullet.svg)}@media (max-width:575.98px){.map-locations .locations ul{font-size:13.5px}}.map-locations .locations li{margin-bottom:10px;cursor:pointer}.player{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);bottom:-40px;z-index:1000}@media (max-width:575.98px){.player{bottom:-30px}}.player .next,.player .pause,.player .play,.player .prev{display:inline-block;width:42px;height:42px;margin-right:20px;position:relative;border-radius:50%;opacity:.7;border:2px solid #fff;-webkit-box-shadow:0 0 0 4px #0b155a;box-shadow:0 0 0 4px #0b155a;background:#0b155a;cursor:pointer}.player .next:hover,.player .pause,.player .play:hover,.player .prev:hover{opacity:1}.player .next:after,.player .pause:after,.player .play:after,.player .prev:after{content:"";display:inline-block;width:7px;height:12px;position:absolute;top:calc(50% - 6px);left:calc(50% - 4px)}.player .pause,.player .play{width:57px;height:57px;opacity:1},.player .play:hover .player .pause:hover{opacity:.7}.player .pause:after,.player .play:after{width:10px;height:16px;top:calc(50% - 8px);left:calc(50% - 2px);background:url(../img/btn-play.svg) no-repeat top right}.player .pause:after{left:calc(50% - 5px);background:url(../img/btn-pause.png) no-repeat top right}.player .next:after{background:url(../img/btn-next.svg) no-repeat top right}.player .prev:after{background:url(../img/btn-prev.svg) no-repeat top right}.player .timeline{display:-webkit-box;display:-ms-flexbox;display:flex;height:30px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;position:relative;padding:0 10px;border-radius:100px;background-color:rgba(11,21,90,.7)}@media (max-width:991.98px){.player .timeline{padding:0}}@media (max-width:991.98px){.player .timeline .hour{display:none}}.player .timeline .hour:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:#fff}.player .timeline .hour:after{content:"";display:inline-block;position:relative;top:-2px;width:20px;height:2px;background:#fff}.player .timeline .end-dot:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:#fff}@media (max-width:991.98px){.player .timeline .end-dot:before{display:none}}.player .time{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:64px;font-size:15px;padding:3px 0 4px 0;z-index:1000;border-radius:15px;background:#0b155a}@media (min-width:992px){.player .time{position:absolute}.player .time.hour-0{left:0}.player .time.hour-1{left:25px}.player .time.hour-2{left:50px}.player .time.hour-3{left:75px}.player .time.hour-4{left:100px}.player .time.hour-5{left:125px}.player .time.hour-6{left:150px}.player .time.hour-7{left:175px}.player .time.hour-8{left:200px}.player .time.hour-9{left:225px}.player .time.hour-10{left:250px}.player .time.hour-11{left:275px}.player .time.hour-12{left:300px}.player .time.hour-13{left:325px}.player .time.hour-14{left:350px}.player .time.hour-15{left:375px}.player .time.hour-16{left:400px}.player .time.hour-17{left:425px}.player .time.hour-18{left:450px}.player .time.hour-19{left:475px}.player .time.hour-20{left:500px}.player .time.hour-21{left:525px}.player .time.hour-22{left:550px}.player .time.hour-23{left:585px}}.slide-background{width:650px;height:290px;z-index:1;position:absolute;bottom:0;left:0;background:url(../img/footer-bg.svg) no-repeat}@media (max-width:575.98px){.slide-background{width:320px;height:143px;background-size:100%}}.logos-partners{margin-top:40px}.logos-partners a{text-decoration:none}.logos-partners a img{margin-left:50px;height:80px}@media only screen and (max-width:430px){.logos-partners a img{height:70px;margin-left:0}}@media only screen and (max-width:340px){.logos-partners a img{height:60px}}.logos-partners a:first-of-type img{margin-left:0}
website/public/css/style.scss
718 718
    bottom: -30px;
719 719
  }
720 720

  
721
  .next, .prev, .play {
721
  .next, .prev, .play, .pause {
722 722
    display: inline-block;
723 723
    width: 42px;
724 724
    height: 42px;
......
746 746
    }
747 747
  }
748 748

  
749
  .play {
749
  .play, .pause {
750 750
    width: 57px;
751 751
    height: 57px;
752 752
    opacity: 1;
......
764 764
    }
765 765
  }
766 766

  
767
  .pause {
768
    &:after {
769
      left: calc(50% - 5px);
770
      background: url($images-dir + 'btn-pause.png') no-repeat top right;
771
    }
772
  }
773

  
767 774
  .next:after {
768 775
    background: url($images-dir + 'btn-next.svg') no-repeat top right;
769 776
  }
website/public/js/zcu-heatmap.js
5 5
var startY = 13.3521;
6 6
var startZoom = 17;
7 7

  
8
var currentTime = 0;
8
var dataSourceRoute;
9
var currentTime;
10
var name;
11
var date;
12

  
13
var timer;
14
var isAnimationRunning = false;
15
var data = [];
16

  
9 17

  
10 18

  
11 19
function initMap() {
......
22 30
  mymap.setView([latitude, longitude], zoom);
23 31
}
24 32

  
25

  
26
function changeTime(direction, max = 0) {
27
  let time = document.getElementById('time');
28

  
29
  if (direction === 'next') {
30
    currentTime += 1;
31

  
32
    if (currentTime > 23) {
33
      currentTime = 0;
34
    }
33
function changeAnimationState() {
34

  
35
  isAnimationRunning = !isAnimationRunning
36
  if (isAnimationRunning) {
37
    $('#play-pause').attr('class', 'pause');
38
    timer = setInterval(
39
      function() {
40
        next();
41
      },
42
      800
43
    );
35 44
  }
36
  else if (direction === 'prev') {
37
    currentTime -= 1;
38

  
39
    if (currentTime < 0) {
40
      currentTime = 23;
41
    }
45
  else {
46
    clearTimeout(timer);
47
    $('#play-pause').attr('class', 'play');
42 48
  }
43 49

  
44
  time.textContent = currentTime + ":00";
45
  time.className = 'time hour-' + currentTime;
50

  
46 51
}
47 52

  
53
function previous() {
54
  currentTime = (currentTime + 23) % 24;
55
  drawHeatmap(data[currentTime]);
56
  setTimeline();
57
}
58

  
59
function next() {
60
  currentTime = (currentTime + 1) % 24;
61
  drawHeatmap(data[currentTime]);
62
  setTimeline();
63
}
48 64

  
49
function animateTimeline() {
50
  setTimeout(
51
    function () {
52
      if (currentTime < 23) {
53
        animateTimeline();
54
        changeTime('next');
55
      }
56
      else {
57
        changeTime('next');
58
      }
59
    }, 400);
65
function setTimeline() {
66
  $('#timeline').text(currentTime + ":00");
67
  $('#timeline').attr('class', 'time hour-' + currentTime);
60 68
}
61 69

  
62
function showHeatmap(route) {
70
function loadCurrentTimeHeatmap(route) {
63 71

  
64
  var name = $('#type').children("option:selected").text();
72
  dataSourceRoute = route;
73
  data = []
74

  
75
  name = $('#type').children("option:selected").text();
65 76
  var parts = $('#date').val().split('-');
66
  var date = parts[2] + parts[1] + parts[0];
67
  var time = $('#time').children("option:selected").val();
77
  date = parts[2] + parts[1] + parts[0];
78
  currentTime = parseInt($('#time').children("option:selected").val());
79
  setTimeline();
68 80

  
69 81
  $.ajax({
70 82
    type: "POST",
71
    url: route + '/' +  name + '/' + date + '/' + time,
83
    url: dataSourceRoute + '/' +  name + '/' + date + '/' + currentTime,
72 84
    success: function(result) {
73
      drawHeatmap(result);
85
      data[currentTime] = result;
86
      drawHeatmap(data[currentTime]);
74 87
    }
75 88
  });
89

  
90
  preload(currentTime, 1);
91
  preload(currentTime, -1);
92

  
93
}
94

  
95
function preload(time, change) {
96

  
97
  var ntime = time + change; 
98
  if (0 <=  ntime && ntime <= 23) {
99
      $.ajax({
100
        type: "POST",
101
        url: dataSourceRoute + '/' +  name + '/' + date + '/' + ntime,
102
        success: function(result) {
103
          data[ntime] = result;
104
          preload(ntime, change);
105
        }
106
      });
107
  }
108

  
76 109
}
77 110

  
78 111

  
79 112
function drawHeatmap(points) {
80 113

  
81 114
  // Todo still switched
82
  points = points.map(function (p) { return [p['y'], p['x'], p['number']]; });
83
  if (heatmapLayer != null) {
84
    mymap.removeLayer(heatmapLayer);
115
  if (points != null) {
116
    points = points.map(function (p) { return [p['x'], p['y'], p['number']]; });
117
    if (heatmapLayer != null) {
118
      mymap.removeLayer(heatmapLayer);
119
    }
120
    heatmapLayer = L.heatLayer(points).addTo(mymap);
85 121
  }
86
  heatmapLayer = L.heatLayer(points, {opacity: 0.5}).addTo(mymap);
87
  heatmapLayer.options = {opacity: 1};
122
  else {
123
    if (heatmapLayer != null) {
124
      mymap.removeLayer(heatmapLayer);
125
    }
126
  }
127

  
88 128
  // var heat_01 = ...
89 129
  // on background map.addLayer(heat_01) -> map.removeLayer(heat_01);
90 130
  // $(.leaflet-heatmap-layer).css('opacity', 'value');
website/src/Controller/HeatmapController.php
30 30
            'heatmap.html.twig',
31 31
            [
32 32
                'form' => $form->createView(),
33
                'submitted' => $form->isSubmitted(),
33 34
                'data_to_display' => $dataSet,
34 35
            ]
35 36
        );
website/templates/heatmap.html.twig
117 117
  </div>
118 118

  
119 119
  <div class="player">
120
    <div class="prev" onclick="changeTime('prev')"></div>
121
    <div class="play" onclick="animateTimeline()"></div>
122
    <div class="next" onclick="changeTime('next')"></div>
120
    <div class="prev" onclick="previous()"></div>
121
    <div class="play" id="play-pause" onclick="changeAnimationState()"></div>
122
    <div class="next" onclick="next()"></div>
123 123

  
124 124
    <div class="timeline">
125
      <div class="time hour-0" id="time">0:00</div>
125
      <div class="time hour-0" id="timeline">0:00</div>
126 126

  
127 127
      <div class="hour"></div>
128 128
      <div class="hour"></div>
......
164 164
    <script src="{{ asset('js/leaflet-heat.js') }}"></script>
165 165
    <script src="{{ asset('js/zcu-heatmap.js') }}"></script>
166 166
    <script>
167
       initMap();
168
        {% if data_to_display is defined %}
169
          showHeatmap("{{ path('opendata') }}");
167
        initMap();
168
        {% if submitted %}
169
          loadCurrentTimeHeatmap("{{ path('opendata') }}");
170 170
        {% endif %}
171 171
    </script>
172 172

  

Také k dispozici: Unified diff