Projekt

Obecné

Profil

« Předchozí | Další » 

Revize bb2d43b5

Přidáno uživatelem Martin Sebela před více než 3 roky(ů)

Re #8159 - frontend bugfixes and refactoring

Zobrazit rozdíly:

website/public/css/style.css
1 1
@charset "UTF-8";
2 2
@import url("https://fonts.googleapis.com/css2?family=Be+Vietnam:wght@400;600;700;800&display=swap");
3 3
html, body {
4
  font-family: 'Be Vietnam', sans-serif;
5
  color: #fff;
6 4
  position: relative;
7 5
  height: 96.2%;
8
  background: #242C6B;
6
  font-family: 'Be Vietnam', sans-serif;
7
  color: #ffffff;
8
  background: #0b155a;
9 9
}
10 10

  
11 11
@media (max-width: 767.98px) {
......
113 113
header .nav-item.button .nav-link {
114 114
  padding-left: 22px;
115 115
  padding-right: 22px;
116
  border: 1px solid #fff;
116
  border: 1px solid #ffffff;
117 117
  border-radius: 20px;
118 118
}
119 119

  
......
124 124
header .navbar-button {
125 125
  padding: .5rem 22px;
126 126
  margin-right: 40px;
127
  border: 1px solid #fff;
127
  border: 1px solid #ffffff;
128 128
  border-radius: 20px;
129 129
  text-decoration: none;
130 130
}
......
173 173

  
174 174
header.map input, header.map .custom-select {
175 175
  letter-spacing: .4px;
176
  color: #fff;
176
  color: #ffffff;
177 177
  border-color: #0048A9;
178 178
  background: #0048A9;
179 179
}
180 180

  
181
header.map input::placeholder, header.map .custom-select::placeholder {
182
  color: #ffffff;
183
  opacity: 1;
184
}
185

  
181 186
header.map .nav-item {
182 187
  margin: 0;
183 188
  border-right: 1px solid #1C6CC0;
......
263 268
}
264 269

  
265 270
a {
266
  color: #fff;
271
  color: #ffffff;
267 272
  outline: none;
268 273
}
269 274

  
270 275
a:hover {
271
  color: #fff;
276
  color: #ffffff;
272 277
}
273 278

  
274 279
hr {
275 280
  width: 300px;
276 281
  text-align: left;
277 282
  margin: 30px 0;
278
  border-top: 2px solid #fff;
283
  border-top: 2px solid #ffffff;
279 284
}
280 285

  
281 286
@media (max-width: 1199.98px) {
......
403 408
  bottom: 20px;
404 409
  z-index: 1;
405 410
  border-radius: 100px;
406
  background: #0B155A;
411
  background: #0b155a;
407 412
}
408 413

  
409 414
@media (max-width: 1199.98px) {
......
430 435
  height: 45px;
431 436
  position: relative;
432 437
  border-radius: 50%;
433
  border: 2px solid #fff;
438
  border: 2px solid #ffffff;
434 439
}
435 440

  
436 441
.swiper-pagination-buttons .btn-prev:after, .swiper-pagination-buttons .btn-next:after {
......
464 469
  bottom: 30px !important;
465 470
  border-radius: 100px;
466 471
  opacity: 0.8;
467
  background: #0B155A;
472
  background: #0b155a;
468 473
}
469 474

  
470 475
@media (min-width: 992px) {
......
487 492
  top: 13px;
488 493
  left: 15px;
489 494
  z-index: 1;
490
  border-top: 2px solid #fff;
495
  border-top: 2px solid #ffffff;
491 496
}
492 497

  
493 498
.swiper-pagination-bullets .swiper-pagination-bullet {
......
496 501
  position: relative;
497 502
  margin: 4px 15px !important;
498 503
  opacity: 1;
499
  border: 2px solid #0B155A;
500
  background: #0B155A;
504
  border: 2px solid #0b155a;
505
  background: #0b155a;
501 506
}
502 507

  
503 508
.swiper-pagination-bullets .swiper-pagination-bullet:before {
......
509 514
  top: 5px;
510 515
  left: 5px;
511 516
  border-radius: 50%;
512
  background: #fff;
517
  background: #ffffff;
513 518
}
514 519

  
515 520
.swiper-pagination-bullets .swiper-pagination-bullet:first-of-type {
......
521 526
}
522 527

  
523 528
.swiper-pagination-bullets .swiper-pagination-bullet-active {
524
  border: 2px solid #fff;
529
  border: 2px solid #ffffff;
525 530
}
526 531

  
527 532
.btn-primary {
......
536 541
  text-transform: uppercase;
537 542
  letter-spacing: 0.4px;
538 543
  border-radius: 30px;
539
  border: 1px solid #0B155A;
540
  background: #0B155A;
544
  border: 1px solid #0b155a;
545
  background: #0b155a;
541 546
}
542 547

  
543 548
.btn-primary:hover, .btn-primary:focus, .btn-primary:active {
......
555 560
}
556 561

  
557 562
.btn-secondary {
558
  background: #0B155A;
563
  background: #0b155a;
559 564
}
560 565

  
561 566
.btn-secondary:hover, .btn-secondary:focus, .btn-secondary:active {
......
569 574
  position: absolute;
570 575
  border-radius: 50%;
571 576
  cursor: pointer;
572
  border: 2px solid #fff;
577
  border: 2px solid #ffffff;
573 578
}
574 579

  
575 580
@media not all and (min-width: 1900px) and (max-width: 2100px) {
......
602 607
  z-index: 0;
603 608
  opacity: 0.75;
604 609
  border-radius: 25px 0 25px 0;
605
  background: #0B155A;
610
  background: #0b155a;
606 611
}
607 612

  
608 613
.map-point .desc {
......
632 637
  top: -2px;
633 638
  left: -2px;
634 639
  border-radius: 50%;
635
  border: 2px solid #fff;
640
  border: 2px solid #ffffff;
636 641
}
637 642

  
638 643
.map-point.point-1 {
......
697 702
  text-decoration: none;
698 703
  border-radius: 50px;
699 704
  opacity: 1;
700
  background: #0B155A;
705
  background: #0b155a;
701 706
}
702 707

  
703 708
.map-locations .menu .circle {
......
708 713
  top: 3px;
709 714
  right: 3px;
710 715
  border-radius: 50%;
711
  border: 2px solid #fff;
716
  border: 2px solid #ffffff;
712 717
}
713 718

  
714 719
.map-locations .menu .circle:after {
......
777 782
  position: relative;
778 783
  border-radius: 50%;
779 784
  opacity: .7;
780
  border: 2px solid #fff;
781
  box-shadow: 0 0 0 4px #0B155A;
782
  background: #0B155A;
785
  border: 2px solid #ffffff;
786
  box-shadow: 0 0 0 4px #0b155a;
787
  background: #0b155a;
783 788
  cursor: pointer;
784 789
}
785 790

  
......
874 879
  text-align: center;
875 880
  border-radius: 15px;
876 881
  cursor: pointer;
877
  background: #0B155A;
882
  background: #0b155a;
878 883
}
879 884

  
880 885
@media (max-width: 390px) {
......
924 929
  width: 6px;
925 930
  height: 6px;
926 931
  border-radius: 50%;
927
  background: #fff;
932
  background: #ffffff;
928 933
}
929 934

  
930 935
.player .timeline .hour:after {
......
934 939
  top: -2px;
935 940
  width: 20px;
936 941
  height: 2px;
937
  background: #fff;
942
  background: #ffffff;
938 943
}
939 944

  
940 945
.player .timeline .end-dot:before {
......
943 948
  width: 6px;
944 949
  height: 6px;
945 950
  border-radius: 50%;
946
  background: #fff;
951
  background: #ffffff;
947 952
}
948 953

  
949 954
@media (max-width: 991.98px) {
......
961 966
  padding: 3px 0 4px 0;
962 967
  z-index: 1000;
963 968
  border-radius: 15px;
964
  background: #0B155A;
969
  background: #0b155a;
965 970
}
966 971

  
967 972
@media (min-width: 992px) {
......
1137 1142
  background: url("../img/btn-next.svg") rgba(125, 125, 125, 0.1) no-repeat center center;
1138 1143
}
1139 1144

  
1145
.leaflet-popup-content-wrapper #total-info {
1146
  margin-left: 5px;
1147
  font-size: 11pt;
1148
}
1149

  
1140 1150
.leaflet-popup-content-wrapper #number-info {
1151
  display: flex;
1152
  align-items: center;
1153
  justify-content: center;
1141 1154
  font-family: monospace;
1142 1155
  font-size: 24pt;
1143 1156
  font-weight: 700;
......
1145 1158

  
1146 1159
.leaflet-popup-content-wrapper #count-info {
1147 1160
  margin: auto;
1148
  color: #fff;
1161
  color: #ffffff;
1149 1162
}
1150 1163

  
1151 1164
header.map .nav-item {
......
1165 1178
  width: 40px;
1166 1179
  margin-left: 10px;
1167 1180
  transition: all 0.2s ease-out;
1168
  color: #0048a9;
1181
  color: #0048A9;
1169 1182
  background: white;
1170 1183
  -webkit-box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.17);
1171 1184
  -moz-box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.17);
......
1200 1213
}
1201 1214

  
1202 1215
header.map .nav-item .btn-secondary:hover {
1203
  color: #0048a9;
1216
  color: #0048A9;
1204 1217
  background: white !important;
1205 1218
  -webkit-box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.22);
1206 1219
  -moz-box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.22);
......
1209 1222

  
1210 1223
header.map .nav-item .btn-secondary:active, header.map .nav-item .btn-secondary:focus {
1211 1224
  background: #f0f0f0 !important;
1212
  color: #0048a9 !important;
1225
  color: #0048A9 !important;
1213 1226
}
1214 1227

  
1215 1228
header.map .nav-item input:hover {
......
1217 1230
}
1218 1231

  
1219 1232
header.map .nav-item input:focus {
1220
  background: #fff;
1233
  background: #ffffff;
1221 1234
  color: #000;
1222 1235
}
1223 1236

  
......
1227 1240
}
1228 1241

  
1229 1242
header.map .nav-item select:hover option {
1230
  background: #0048a9;
1243
  background: #0048A9;
1231 1244
}
1232 1245

  
1233 1246
header.map .nav-item select:focus {
1234
  background: #0048a9;
1247
  background: #0048A9;
1235 1248
  color: white;
1236 1249
}
1237 1250

  
......
1276 1289
.dropdown #dataset-dropdown-time .dropdown-item:nth-of-type(even) {
1277 1290
  background: rgba(0, 0, 0, 0.05);
1278 1291
}
1292

  
1293
.dropdown #dataset-dropdown-time .dropdown-item:nth-of-type(even):active {
1294
  background: #007bff;
1295
}
website/public/css/style.scss
2 2
@import 'bootstrap-4.4.1/_variables.scss';
3 3
@import 'bootstrap-4.4.1/mixins/_breakpoints.scss';
4 4

  
5
@import url('https://fonts.googleapis.com/css2?family=Be+Vietnam:wght@400;600;700;800&display=swap');
6

  
7
$primary-bg-color: #0048A9;
8
$primary-bg-color-darker: #004fb3;
9
$secondary-bg-color: #0b155a;
10

  
11
$primary-text-color: #ffffff;
12

  
5 13
$images-dir: '../img/';
6 14

  
7
@import url('https://fonts.googleapis.com/css2?family=Be+Vietnam:wght@400;600;700;800&display=swap');
8 15

  
9 16
html, body {
10
  font-family: 'Be Vietnam', sans-serif;
11
  color: #fff;
12 17
  position: relative;
13 18
  height: 96.2%;
14
  background: #242C6B;
19
  font-family: 'Be Vietnam', sans-serif;
20
  color: $primary-text-color;
21
  background: $secondary-bg-color;
15 22

  
16 23
  &.intro {
17 24
    @include media-breakpoint-down(sm) {
......
22 29

  
23 30
header {
24 31
  height: 70px;
25
  background: #0048A9;
32
  background: $primary-bg-color;
26 33

  
27 34
  .logo {
28 35
    width: 450px;
......
75 82
      left: 0;
76 83
      z-index: 1001;
77 84
      opacity: .98;
78
      background: #004fb3;
85
      background: $primary-bg-color-darker;
79 86
    }
80 87
  }
81 88

  
......
106 113
      .nav-link {
107 114
        padding-left: 22px;
108 115
        padding-right: 22px;
109
        border: 1px solid #fff;
116
        border: 1px solid $primary-text-color;
110 117
        border-radius: 20px;
111 118

  
112 119
        &:hover {
......
119 126
  .navbar-button {
120 127
    padding: .5rem 22px;
121 128
    margin-right: 40px;
122
    border: 1px solid #fff;
129
    border: 1px solid $primary-text-color;
123 130
    border-radius: 20px;
124 131
    text-decoration: none;
125 132

  
......
139 146
    font-weight: 800;
140 147
    letter-spacing: 0.4px;
141 148
    border-radius: 0;
142
    border: #0048A9;
149
    border: $primary-bg-color;
143 150
    background: #004fb3;
144 151

  
145 152
    &:hover {
146
      background: #0048A9 !important;
153
      background: $primary-bg-color !important;
147 154
    }
148 155
  }
149 156

  
......
168 175

  
169 176
    input, .custom-select {
170 177
      letter-spacing: .4px;
171
      color: #fff;
172
      border-color: #0048A9;
173
      background: #0048A9;
178
      color: $primary-text-color;
179
      border-color: $primary-bg-color;
180
      background: $primary-bg-color;
181

  
182
      &::placeholder {
183
        color: $primary-text-color;
184
        opacity: 1;
185
      }
174 186
    }
175 187

  
176 188
    .nav-item {
......
244 256
}
245 257

  
246 258
a {
247
  color: #fff;
259
  color: $primary-text-color;
248 260
  outline: none;
249 261

  
250 262
  &:hover {
251
    color: #fff;
263
    color: $primary-text-color;
252 264
  }
253 265
}
254 266

  
......
256 268
  width: 300px;
257 269
  text-align: left;
258 270
  margin: 30px 0;
259
  border-top: 2px solid #fff;
271
  border-top: 2px solid $primary-text-color;
260 272

  
261 273
  @include media-breakpoint-down(lg) {
262 274
    width: 90%;
......
374 386
  bottom: 20px;
375 387
  z-index: 1;
376 388
  border-radius: 100px;
377
  background: #0B155A;
389
  background: $secondary-bg-color;
378 390

  
379 391
  @include media-breakpoint-down(lg) {
380 392
    right: 20px;
......
394 406
    height: 45px;
395 407
    position: relative;
396 408
    border-radius: 50%;
397
    border: 2px solid #fff;
409
    border: 2px solid $primary-text-color;
398 410

  
399 411
    &:after {
400 412
      content: "";
......
430 442
  bottom: 30px !important;
431 443
  border-radius: 100px;
432 444
  opacity: 0.8;
433
  background: #0B155A;
445
  background: $secondary-bg-color;
434 446

  
435 447
  @include media-breakpoint-up(lg) {
436 448
    left: 50% !important;
......
448 460
    top: 13px;
449 461
    left: 15px;
450 462
    z-index: 1;
451
    border-top: 2px solid #fff;
463
    border-top: 2px solid $primary-text-color;
452 464
  }
453 465

  
454 466
  .swiper-pagination-bullet {
......
457 469
    position: relative;
458 470
    margin: 4px 15px !important;
459 471
    opacity: 1;
460
    border: 2px solid #0B155A;
461
    background: #0B155A;
472
    border: 2px solid $secondary-bg-color;
473
    background: $secondary-bg-color;
462 474

  
463 475
    &:before {
464 476
      content: "";
......
469 481
      top: 5px;
470 482
      left: 5px;
471 483
      border-radius: 50%;
472
      background: #fff;
484
      background: $primary-text-color;
473 485
    }
474 486

  
475 487
    &:first-of-type {
......
482 494
  }
483 495

  
484 496
  .swiper-pagination-bullet-active {
485
    border: 2px solid #fff;
497
    border: 2px solid $primary-text-color;
486 498
  }
487 499
}
488 500

  
......
498 510
  text-transform: uppercase;
499 511
  letter-spacing: 0.4px;
500 512
  border-radius: 30px;
501
  border: 1px solid #0B155A;
502
  background: #0B155A;
513
  border: 1px solid $secondary-bg-color;
514
  background: $secondary-bg-color;
503 515

  
504 516
  &:hover, &:focus, &:active {
505
    border: 1px solid #0048A9;
506
    background: #0048A9 !important;
517
    border: 1px solid $primary-bg-color;
518
    background: $primary-bg-color !important;
507 519
  }
508 520

  
509 521
  @include media-breakpoint-down(xs) {
......
515 527
}
516 528

  
517 529
.btn-secondary {
518
  background: #0B155A;
530
  background: $secondary-bg-color;
519 531

  
520 532
  &:hover, &:focus, &:active {
521 533
    background: #7378A0 !important;
......
530 542
  position: absolute;
531 543
  border-radius: 50%;
532 544
  cursor: pointer;
533
  border: 2px solid #fff;
545
  border: 2px solid $primary-text-color;
534 546

  
535 547
  @media not all and (min-width: 1900px) and (max-width: 2100px) {
536 548
    display: none;
......
561 573
      z-index: 0;
562 574
      opacity: 0.75;
563 575
      border-radius: 25px 0 25px 0;
564
      background: #0B155A;
576
      background: $secondary-bg-color;
565 577
    }
566 578
  }
567 579

  
......
592 604
    top: -2px;
593 605
    left: -2px;
594 606
    border-radius: 50%;
595
    border: 2px solid #fff;
607
    border: 2px solid $primary-text-color;
596 608
  }
597 609

  
598 610
  &.point-1 {
......
657 669
    text-decoration: none;
658 670
    border-radius: 50px;
659 671
    opacity: 1;
660
    background: #0B155A;
672
    background: $secondary-bg-color;
661 673

  
662 674
    .circle {
663 675
      display: inline-block;
......
667 679
      top: 3px;
668 680
      right: 3px;
669 681
      border-radius: 50%;
670
      border: 2px solid #fff;
682
      border: 2px solid $primary-text-color;
671 683

  
672 684
      &:after {
673 685
        content: "";
......
735 747
    position: relative;
736 748
    border-radius: 50%;
737 749
    opacity: .7;
738
    border: 2px solid #fff;
739
    box-shadow: 0 0 0 4px #0B155A;
740
    background: #0B155A;
750
    border: 2px solid $primary-text-color;
751
    box-shadow: 0 0 0 4px $secondary-bg-color;
752
    background: $secondary-bg-color;
741 753
    cursor: pointer;
742 754

  
743 755
    &:hover {
......
826 838
    text-align: center;
827 839
    border-radius: 15px;
828 840
    cursor: pointer;
829
    background: #0B155A;
841
    background: $secondary-bg-color;
830 842

  
831 843
    @media (max-width: 390px) {
832 844
      margin-right: 0;
......
868 880
        width: 6px;
869 881
        height: 6px;
870 882
        border-radius: 50%;
871
        background: #fff;
883
        background: $primary-text-color;
872 884
      }
873 885

  
874 886
      &:after {
......
878 890
        top: -2px;
879 891
        width: 20px;
880 892
        height: 2px;
881
        background: #fff;
893
        background: $primary-text-color;
882 894
      }
883 895
    }
884 896

  
......
888 900
      width: 6px;
889 901
      height: 6px;
890 902
      border-radius: 50%;
891
      background: #fff;
903
      background: $primary-text-color;
892 904

  
893 905
      @include media-breakpoint-down(md) {
894 906
        display: none;
......
905 917
    padding: 3px 0 4px 0;
906 918
    z-index: 1000;
907 919
    border-radius: 15px;
908
    background: #0B155A;
920
    background: $secondary-bg-color;
909 921

  
910 922
    @include media-breakpoint-up(lg) {
911 923
      position: absolute;
......
1037 1049
    }
1038 1050
  }
1039 1051

  
1052
  #total-info {
1053
    margin-left: 5px;
1054
    font-size: 11pt;
1055
  }
1056

  
1040 1057
  #number-info {
1058
    display: flex;
1059
    align-items: center;
1060
    justify-content: center;
1041 1061
    font-family: monospace;
1042 1062
    font-size: 24pt;
1043 1063
    font-weight: 700;
......
1045 1065

  
1046 1066
  #count-info {
1047 1067
    margin: auto;
1048
    color: #fff;
1068
    color: $primary-text-color;
1049 1069
  }
1050 1070
}
1051 1071

  
......
1066 1086
    width: 40px;
1067 1087
    margin-left: 10px;
1068 1088
    transition: all 0.2s ease-out;
1069
    color: #0048a9;
1089
    color: $primary-bg-color;
1070 1090
    background: rgba(255, 255, 255, 1);
1071 1091
    -webkit-box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.17);
1072 1092
    -moz-box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.17);
......
1098 1118
    }
1099 1119
    
1100 1120
    &:hover {
1101
      color: #0048a9;
1121
      color: $primary-bg-color;
1102 1122
      background: rgba(255, 255, 255, 1) !important;
1103 1123
      -webkit-box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.22);
1104 1124
      -moz-box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.22);
......
1107 1127

  
1108 1128
    &:active, &:focus {
1109 1129
      background: rgba(240, 240, 240, 1) !important;
1110
      color: #0048a9 !important;
1130
      color: $primary-bg-color !important;
1111 1131
    }
1112 1132
  }
1113 1133

  
......
1117 1137
    }
1118 1138

  
1119 1139
    &:focus {
1120
      background: #fff;
1140
      background: $primary-text-color;
1121 1141
      color: #000;
1122 1142
    }
1123 1143
  }
......
1128 1148
      background: rgba(255, 255, 255, .2);
1129 1149

  
1130 1150
      option {
1131
        background: #0048a9;
1151
        background: $primary-bg-color;
1132 1152
      }
1133 1153
    }
1134 1154

  
1135 1155
    &:focus {
1136
      background: #0048a9;
1156
      background: $primary-bg-color;
1137 1157
      color: white;
1138 1158
    }
1139 1159
  }
......
1161 1181
    width: 100%;
1162 1182
    text-align: left;
1163 1183
    letter-spacing: .4px;
1164
    color: #ffffff;
1184
    color: $primary-text-color;
1165 1185

  
1166 1186
    &:hover {
1167 1187
      background: #336dba;
......
1176 1196

  
1177 1197
  #dataset-dropdown-time .dropdown-item:nth-of-type(even) {
1178 1198
    background: rgba(0,0,0,.05);
1199

  
1200
    &:active {
1201
      background: #007bff;
1202
    }
1179 1203
  }
1180 1204
}
website/public/js/zcu-heatmap.js
71 71
  className: className
72 72
}).setLatLng([lat / num, lng / num])
73 73

  
74
const genPopUp = (datasetName, place, number, sum, currentPos, maxPos) => {
75
  const header = `<strong>${datasetName}</strong><div id="place-info">${place}</div>`
76
  const currentNum = `<span id="digit-info">${number}</span>`
77
  // eslint-disable-next-line eqeqeq
78
  const sumNum = `<span id="total-info" style="font-size: large">${(sum && (sum != number)) ? '/' + sum : ''}</span>`
79
  const digitInfo = `<div id="number-info">${currentNum}${sumNum}</div>`
74
const genPopUp = (datasetName, place, count, sum, currentPos, maxPos) => {
75
  const popupHeader = `
76
    <strong>${datasetName}</strong>
77
    <div id="place-info">${place}</div>`
78
  const popupData = `
79
    <div id="number-info">
80
      <span id="digit-info">${count}</span>
81
      <span id="total-info">${(sum && (sum != count)) ? '/' + sum : ''}</span>
82
    </div>`
80 83
  const { previousButton, nextButton, posInfo } = genPopUpControlButtons(currentPos, maxPos)
84

  
81 85
  return `
82
  ${header}
83
  ${digitInfo}
86
  ${popupHeader}
87
  ${popupData}
84 88
  ${genPopUpControls(maxPos > 1 ? [previousButton, posInfo, nextButton] : null)}
85 89
  `
86 90
}
......
110 114
    inDebounce = setTimeout(() => func.apply(context, args), delay)
111 115
  }
112 116
}
117

  
113 118
const onValueChangeRegister = () => {
114 119
  $('#date').change(function () {
115 120
    data = []
116 121
    loadCurrentTimeHeatmap(dataSourceRoute, positionsSourceRoute)
117
    console.log('VAL:', $(this).val())
118 122
    const date = new Date($(this).val())
119 123
    $('#player-date').html(`${date.getDate()}. ${date.getMonth() + 1}. ${date.getFullYear()}`)
124
    changeUrl()
120 125
  })
126

  
121 127
  $('#dataset-dropdown-time input[type="radio"]').each(function () {
122 128
    $(this).change(function () {
123 129
      currentTime = $(this).val()
124 130
      updateHeaderControls()
125 131
      setTimeline()
126 132
      drawHeatmap(data[currentTime])
133
      changeUrl()
127 134
    })
128 135
  })
136

  
129 137
  $('input[type=checkbox]').each(function () {
130 138
    $(this).change(
131 139
      debounce(() => onCheckboxClicked(this), 1000)
132 140
    )
133 141
  })
134 142
}
143

  
135 144
/**
136 145
 * Initialize leaflet map on start position which can be default or set based on user action
137 146
 */
......
330 339

  
331 340
function updateHeaderControls () {
332 341
  $(`#time_${currentTime}`).prop('checked', true)
333
  $('#dropdownMenuButton-time').html(currentTime >= 10 ? `${currentTime}:00` : `0${currentTime}:00`)
342
  $('#dropdownMenuButtonTime').html((currentTime < 10 ? '0' : '') + `${currentTime}:00`)
334 343
}
335 344

  
336 345
function setTimeline () {
website/templates/heatmap-locations.html.twig
1
<ul>
2
  <li onclick="setMapView(49.7248, 13.3521, 17)">Kampus ZČU</li>
3
  <li onclick="setMapView(49.7367263, 13.3709177, 18)">FPE &ndash; Fakulta pedagogická</li>
4
  <li onclick="setMapView(49.7474950, 13.3748308, 18)">FPR &ndash; Fakulta právnická</li>
5
  <li onclick="setMapView(49.7450169, 13.3702668, 18)">FZS &ndash; Fakulta zdravotnických studií</li>
6
  <li onclick="setMapView(50.0762590, 12.3640213, 17)">FEK &ndash; pracoviště Cheb</li>
7
  <li onclick="setMapView(49.7236785, 13.3353118, 18)">NTC &ndash; výzkumné centrum</li>
8
  <li onclick="setMapView(49.9590236, 13.1597114, 18)">Zámek ZČU &ndash; Nečtiny</li>
9
  <li onclick="setMapView(49.7345564, 13.3585038, 18)">Koleje Borská</li>
10
  <li onclick="setMapView(49.7250373, 13.3696772, 18)">Koleje Bory</li>
11
  <li onclick="setMapView(49.7600000, 13.3723463, 18)">Koleje Lochotín</li>
12
  <li onclick="setMapView(49.7293726, 13.3589237, 15)">Oblast s&nbsp;koloběžkami</li>
13
</ul>
website/templates/heatmap.html.twig
8 8
  <link rel="stylesheet" href="{{ asset('css/bootstrap-datepicker3.css') }}">
9 9
{% endblock %}
10 10

  
11

  
12 11
{% block body %}
13 12

  
14 13
  <header class="map">
......
22 21
      </button>
23 22

  
24 23
      <div class="collapse navbar-collapse ml-auto" id="navigation">
25
        
26 24
        {{ form_start(form, {'action': path('heatmap'), 'method': 'GET'}) }}
27 25
          <ul class="navbar-nav">
28 26
            <li class="nav-item">
29 27
              {{ form_label(form.date, 'Vyberte datum', {
30 28
                label_attr: {class: 'font-weight-bold'}
31 29
              }) }}
32
              {{
33
                form_widget(form.date,
30
              {{ form_widget(form.date,
34 31
                {
35 32
                  'type' : 'text',
36 33
                  'id' : 'date',
......
46 43
            </li>
47 44
            <li class="nav-item">
48 45
              <label class="font-weight-bold">Vyberte čas</label>
49
                <div class="dropdown">
50
                <button class="btn dropdown-toggle" type="button_1" id="dropdownMenuButton-time" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
46
              <div class="dropdown">
47
                <button type="button" class="btn dropdown-toggle" id="dropdownMenuButtonTime" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
51 48
                  {{ current_time }}
52 49
                </button>
53
                <div id="dataset-dropdown-time" class="dropdown-menu" aria-labelledby="dropdownMenuButton-time">
54
                {% for oneTime in form.time.children %}
50
                <div id="dataset-dropdown-time" class="dropdown-menu" aria-labelledby="dropdownMenuButtonTime">
51
                  {% for oneTime in form.time.children %}
55 52
                  <label class="dropdown-item custom-dropdown-item">
56
                  {{ form_widget(oneTime, {
57
                    attr: {class: 'd-none'}
58
                  }) }}
59
                  {{ form_label(oneTime, null) }}
60
                </label>   
61
                {% endfor %}
53
                    {{ form_widget(oneTime, {attr: {class: 'd-none'}}) }}
54
                    {{ form_label(oneTime, null) }}
55
                  </label>
56
                  {% endfor %}
57
                </div>
62 58
              </div>
63 59
            </li>
64 60
            <li class="nav-item">
65 61
              <div class="dropdown">
66
                <button class="btn dropdown-toggle font-weight-bold" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
62
                <button type="button" class="btn dropdown-toggle font-weight-bold" id="dropdownMenuButtonDataset" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
67 63
                  Vyberte datovou sadu
68
              </button>
69
              <div id="dataset-dropdown" class="dropdown-menu" aria-labelledby="dropdownMenuButton">
70
              {% for oneType in form.type.children %}
71
              <label class="dropdown-item custom-dropdown-item">
72
              <div class="custom-control custom-checkbox custom-checkbox-{{oneType.vars.value}}">
73
              {{ form_widget(oneType, {
74
                attr: {
75
                  'class': "custom-control-input custom-control-input-#{oneType.vars.value}",
76
                  'data-dataset-display-name': "#{oneType.vars.label}"
77
                  }
78
              }) }}
79
              {{ form_label(oneType, null, {
80
                'label_attr': {'class': 'custom-control-label'}
81
                }) }}
82
              </div>
83
              </label>
84
              {% endfor %}
64
                </button>
65
                <div id="dataset-dropdown" class="dropdown-menu" aria-labelledby="dropdownMenuButtonDataset">
66
                  {% for oneDataset in form.type.children %}
67
                  <div class="dropdown-item custom-dropdown-item">
68
                    <div class="custom-control custom-checkbox custom-checkbox-{{oneDataset.vars.value}}">
69
                      {{ form_widget(oneDataset, {
70
                        attr: {
71
                          'class': "custom-control-input custom-control-input-#{oneDataset.vars.value}",
72
                          'data-dataset-display-name': "#{oneDataset.vars.label}"
73
                          }
74
                      }) }}
75
                      {{ form_label(oneDataset, null, {
76
                        'label_attr': {'class': 'custom-control-label'}
77
                      }) }}
78
                    </div>
79
                  </div>
80
                  {% endfor %}
81
                </div>
85 82
              </div>
86
              </div>  
87 83
            </li>
88

  
89 84
            <li class="nav-item">
90
              {{
91
                form_widget(form.submit,
85
              {{ form_widget(form.submit,
92 86
                {
93 87
                  'name' : '',
94 88
                  'label' : '',
......
100 94
                })
101 95
              }}
102 96
            </li>
103
          </ul> 
104
        
97
          </ul>
105 98
        {{ form_end(form) }}
106

  
107 99
      </div>
108 100
    </nav>
109 101
  </header>
......
115 107
      <div class="circle"></div>
116 108
    </a>
117 109
    <div class="locations collapse" id="mapLocations">
118
      <ul>
119
        <li onclick="setMapView(49.7248, 13.3521, 17)">Kampus ZČU</li>
120
        <li onclick="setMapView(49.7367263, 13.3709177, 18)">FPE &ndash; Pedagogická fakulta</li>
121
        <li onclick="setMapView(49.7474950, 13.3748308, 18)">FPR &ndash; Právnická fakulta</li>
122
        <li onclick="setMapView(49.7450169, 13.3702668, 18)">FZS &ndash; Fakulta zdravotnických studií</li>
123
        <li onclick="setMapView(50.0762590, 12.3640213, 17)">FEK &ndash; pracoviště Cheb</li>
124
        <li onclick="setMapView(49.7236785, 13.3353118, 18)">NTC &ndash; výzkumné centrum</li>
125
        <li onclick="setMapView(49.9590236, 13.1597114, 18)">Zámek ZČU &ndash; Nečtiny</li>
126
        <li onclick="setMapView(49.7345564, 13.3585038, 18)">Koleje Borská</li>
127
        <li onclick="setMapView(49.7250373, 13.3696772, 18)">Koleje Bory</li>
128
        <li onclick="setMapView(49.7600000, 13.3723463, 18)">Koleje Lochotín</li>
129
        <li onclick="setMapView(49.7293726, 13.3589237, 15)">Oblast s&nbsp;koloběžkami</li>
130
      </ul>
110
      {% include 'heatmap-locations.html.twig' %}
131 111
    </div>
132 112
  </div>
133 113

  
......
191 171
        initDatepicker("{{ path('dates') }}");
192 172
        initLocationsMenu();
193 173
        initMap();        
194
        $( document ).ready(function() {
174
        $(document).ready(function() {
195 175
          onDocumentReady();
196 176
          checkDataSetsAvailability("{{ path('available') }}")
197 177
          {% if submitted %}
......
209 189
  <style>
210 190
    {% for key, item in dataset_colors %}
211 191
      .custom-control-input-{{key}}:focus~.custom-control-label::before {
212
          border-color: {{item}} !important;
213
          box-shadow: 0 0 0 0.2rem rgba(192,192,192, 0.4) !important;
192
        border-color: {{item}} !important;
193
        box-shadow: 0 0 0 0.2rem rgba(192,192,192, 0.4) !important;
214 194
      }
215 195

  
216 196
      .custom-control-input-{{key}}:checked~.custom-control-label::before {
217
          border-color: {{item}} !important;
218
          background-color: {{item}} !important;
197
        border-color: {{item}} !important;
198
        background-color: {{item}} !important;
219 199
      }
220 200

  
221 201
      .custom-control-input-{{key}}:focus:not(:checked)~.custom-control-label::before {
222
          border-color: {{item}} !important;
202
        border-color: {{item}} !important;
223 203
      }
224 204

  
225 205
      .custom-control-input-{{key}}:not(:disabled):active~.custom-control-label::before {
226
          background-color: {{item}} !important;
227
          border-color: {{item}} !important;
206
        background-color: {{item}} !important;
207
        border-color: {{item}} !important;
228 208
      }
229 209

  
230
      .popup-{{key}} > .leaflet-popup-content-wrapper, .popup-{{key}} .leaflet-popup-tip{
210
      .popup-{{key}} > .leaflet-popup-content-wrapper, .popup-{{key}} .leaflet-popup-tip {
231 211
        background-color: {{item}} !important;
232 212
      }
233 213
    {% endfor %}

Také k dispozici: Unified diff