... | ... |
@@ -9,6 +9,8 @@ |
9 | 9 |
{% block main %} |
10 | 10 |
<div class="tl_panel"> |
11 | 11 |
<div id="vr-daily-schedule-zoom" class="tl_submit_panel"> |
12 |
+ <label for="daily-zoom-slider">Zoom</label> |
|
13 |
+ <input type="range" id="daily-zoom-slider" min="1.5" max="9" step="1.5" value="3"> |
|
12 | 14 |
<button id="daily-zoom-in" class="tl_submit">+</button> |
13 | 15 |
<button id="daily-zoom-out" class="tl_submit">-</button> |
14 | 16 |
<button id="daily-zoom-reset" class="tl_submit" data-default="3">Reset</button> |
... | ... |
@@ -35,8 +37,17 @@ |
35 | 37 |
{ |
36 | 38 |
root.style.setProperty('--slot-height',defaultZoom); |
37 | 39 |
} |
40 |
+ zoomPanel.querySelector('#daily-zoom-slider').value = parseFloat(rootStyles.getPropertyValue('--slot-height')); |
|
38 | 41 |
}); |
39 | 42 |
}); |
43 |
+ |
|
44 |
+ zoomPanel.querySelector('#daily-zoom-slider').addEventListener('input',(event) => { |
|
45 |
+ let currentVal = rootStyles.getPropertyValue('--slot-height'); |
|
46 |
+ let split = currentVal.match(/^([-.\d]+(?:\.\d+)?)(.*)$/); |
|
47 |
+ [value,unit] = [parseFloat(split[1]),split[2] ? split[2] : '']; |
|
48 |
+ |
|
49 |
+ root.style.setProperty('--slot-height',event.target.value + unit); |
|
50 |
+ }); |
|
40 | 51 |
</script> |
41 | 52 |
</div> |
42 | 53 |
<div class="vr-daily-schedule"> |
... | ... |
@@ -9,8 +9,13 @@ $time-color: #666; |
9 | 9 |
$text-color: #333; |
10 | 10 |
$header-bg-color: #f2f2f2; |
11 | 11 |
$slot-height: 3rem; |
12 |
+$slot-animation-duration: .25s; |
|
12 | 13 |
$cell-amount: 48; |
13 | 14 |
|
15 |
+@mixin animate-slot { |
|
16 |
+ transition: height $slot-animation-duration ease-in-out, line-height $slot-animation-duration ease-in-out, grid-template-rows $slot-animation-duration ease-in-out; |
|
17 |
+} |
|
18 |
+ |
|
14 | 19 |
:root { |
15 | 20 |
--slot-height: #{$slot-height}; |
16 | 21 |
} |
... | ... |
@@ -43,6 +48,7 @@ $cell-amount: 48; |
43 | 48 |
position: relative; |
44 | 49 |
padding-inline-end: 8px; |
45 | 50 |
text-align: right; |
51 |
+ @include animate-slot; |
|
46 | 52 |
|
47 | 53 |
&:first-child { |
48 | 54 |
.daily-timeline-label { |
... | ... |
@@ -77,6 +83,7 @@ $cell-amount: 48; |
77 | 83 |
|
78 | 84 |
.line { |
79 | 85 |
height: var(--slot-height); |
86 |
+ @include animate-slot; |
|
80 | 87 |
|
81 | 88 |
&:after { |
82 | 89 |
content: ""; |
... | ... |
@@ -109,9 +116,11 @@ $cell-amount: 48; |
109 | 116 |
width: 100%; |
110 | 117 |
display: grid; |
111 | 118 |
grid-template-rows: repeat($cell-amount, calc(var(--slot-height) / (#{$cell-amount} / 24))); |
119 |
+ @include animate-slot; |
|
112 | 120 |
|
113 | 121 |
.event-cell { |
114 | 122 |
line-height: calc(var(--slot-height) / 4); |
123 |
+ @include animate-slot; |
|
115 | 124 |
z-index: 2; |
116 | 125 |
box-sizing: border-box; |
117 | 126 |
border-radius: 5px; |