diff --git a/assets/js/components/VehicleSoc.vue b/assets/js/components/VehicleSoc.vue index 250a14eda..ba5f6d8a3 100644 --- a/assets/js/components/VehicleSoc.vue +++ b/assets/js/components/VehicleSoc.vue @@ -43,7 +43,10 @@ :value="visibleTargetSoC" class="target-slider" @input="movedTargetSoC" - @change="setTargetSoC" + @mousedown="changeTargetSoCStart" + @touchstart="changeTargetSoCStart" + @mouseup="changeTargetSoCEnd" + @touchend="changeTargetSoCEnd" /> @@ -65,6 +68,7 @@ export default { return { selectedTargetSoC: null, allowSliderHiding: false, + interactionStartScreenY: null, }; }, mounted: function () { @@ -72,6 +76,11 @@ export default { this.allowSliderHiding = true; }, 1000); }, + watch: { + targetSoC: function () { + this.selectedTargetSoC = this.targetSoC; + }, + }, computed: { vehicleSocDisplayWidth: function () { if (this.vehiclePresent && this.vehicleSoc >= 0) { @@ -129,6 +138,24 @@ export default { }, }, methods: { + changeTargetSoCStart: function (e) { + const screenY = e.screenY || e.changedTouches[0].screenY; + this.interactionStartScreenY = screenY; + }, + changeTargetSoCEnd: function (e) { + const screenY = e.screenY || e.changedTouches[0].screenY; + const yDiff = Math.abs(screenY - this.interactionStartScreenY); + // horizontal scroll detected - revert slider change + if (yDiff > 40) { + e.target.value = this.targetSoC; + this.selectedTargetSoC = this.targetSoC; + return false; + } + // value changed + if (e.target.value !== this.targetSoC) { + this.$emit("target-soc-updated", e.target.value); + } + }, movedTargetSoC: function (e) { const minTargetSoC = 40; if (e.target.value < minTargetSoC) { @@ -140,9 +167,6 @@ export default { this.selectedTargetSoC = e.target.value; return true; }, - setTargetSoC: function (e) { - this.$emit("target-soc-updated", e.target.value); - }, }, }; diff --git a/dist/css/index.93d569c8.css b/dist/css/index.8adaf1da.css similarity index 81% rename from dist/css/index.93d569c8.css rename to dist/css/index.8adaf1da.css index cd328fc27..34200f315 100644 --- a/dist/css/index.93d569c8.css +++ b/dist/css/index.8adaf1da.css @@ -1 +1 @@ -:root{--evcc-green:#66d85a;--evcc-dark-green:#3aba2c;--evcc-yellow:#ffe000;--evcc-grid:var(--bs-gray-dark);--evcc-self:var(--evcc-dark-green);--evcc-export:var(--evcc-yellow);--bs-primary:var(--evcc-dark-green);--bs-primary-rgb:58,186,44}.bg-primary{background-color:var(--evcc-dark-green)!important}a{color:var(--evcc-dark-green)}.progress-bar-animated{animation-direction:reverse}.bg-muted{opacity:.25}.btn-primary{background-color:var(--bs-gray-dark);border-color:var(--bs-gray-dark)}.btn-primary:hover{background-color:var(--evcc-dark-green);border-color:var(--evcc-dark-green)}.icon[data-v-785de62e]{color:#0fdd42}.icon[data-v-1eecc7b7]{color:#0fdd42;display:inline-block}.sponsor-button[data-v-1eecc7b7]{touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.support-button .solid[data-v-1eecc7b7]{display:none}.support-button:hover .solid[data-v-1eecc7b7]{display:inline-block}.support-button:hover .outline[data-v-1eecc7b7]{display:none}.logo[data-v-152e128c]{width:85px}.app[data-v-152e128c]{min-height:100vh}.title[data-v-152e128c]{position:relative;top:.1rem}.battery[data-v-2dcca16c]{transform:translateX(.35rem) rotate(-90deg);transition-property:transform;transition-duration:.25s;transition-timing-function:ease}.power--in .battery[data-v-2dcca16c]{transform:translateX(.7rem) rotate(-90deg)}.power--out .battery[data-v-2dcca16c]{transform:translateX(0) rotate(-90deg)}.arrow[data-v-2dcca16c]{margin-left:-.2rem;opacity:0;transform:translateX(-.5rem);transition-property:opacity,transform;transition-duration:.25s;transition-timing-function:ease}.power--in .arrow[data-v-2dcca16c]{opacity:1;transform:translateX(-1rem) scaleX(1)}.power--out .arrow[data-v-2dcca16c]{opacity:1;transform:translateX(0) scaleX(1)}.label-bar[data-v-17da7e54]{width:0;margin:0;height:1.7rem;padding:.6rem 0;opacity:1;overflow:hidden}.label-bar-scale--hidden[data-v-17da7e54]{opacity:0}.label-bar-scale[data-v-17da7e54]{border:1px solid var(--bs-gray);height:.5rem;background:none;display:flex;justify-content:center;align-items:center;white-space:nowrap;border-radius:0;transition:border-radius .5s linear}.label-bar--top .label-bar-scale[data-v-17da7e54]{border-bottom:none}.label-bar--bottom .label-bar-scale[data-v-17da7e54]{border-top:none}.label-bar--top.label-bar--first .label-bar-scale[data-v-17da7e54]{border-top-left-radius:4px}.label-bar--top.label-bar--last .label-bar-scale[data-v-17da7e54]{border-top-right-radius:4px}.label-bar--bottom.label-bar--first .label-bar-scale[data-v-17da7e54]{border-bottom-left-radius:4px}.label-bar--bottom.label-bar--last .label-bar-scale[data-v-17da7e54]{border-bottom-right-radius:4px}.label-bar:not(.label-bar--first) .label-bar-scale[data-v-17da7e54]{border-left:none}.label-bar-icon[data-v-17da7e54]{background-color:#fff;color:var(--bs-gray);padding:0 .3rem;opacity:1}.label-bar--top .label-bar-icon[data-v-17da7e54]{margin-top:-6px}.label-bar--bottom .label-bar-icon[data-v-17da7e54]{margin-top:6px}.label-bar--hidden[data-v-17da7e54],.label-bar--hide-icon .label-bar-icon[data-v-17da7e54]{opacity:0}.site-progress[data-v-787f3c3e]{--height:38px;height:var(--height);margin:.25rem 0;border-radius:5px;display:flex;overflow:hidden}.site-progress-bar[data-v-787f3c3e]{display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative;width:0}.visualization--ready .site-progress-bar[data-v-787f3c3e]{transition-property:width;transition-duration:.5s;transition-timing-function:linear}.grid-import[data-v-787f3c3e]{background-color:var(--evcc-grid);color:var(--bs-white)}.self-consumption[data-v-787f3c3e]{background-color:var(--evcc-self);color:var(--bs-white)}.pv-export[data-v-787f3c3e]{background-color:var(--evcc-export);color:var(--bs-dark)}.power[data-v-787f3c3e]{display:block;margin:0 .2rem;white-space:nowrap;overflow:hidden}.visualization--ready[data-v-787f3c3e] .label-bar{transition-property:width,opacity;transition-duration:.5s,.25s;transition-timing-function:linear,ease}.visualization--ready[data-v-787f3c3e] .label-bar-icon{transition:opacity .25s ease-in}.energyflow[data-v-d9a8a664]{cursor:pointer}.color-grid[data-v-d9a8a664]{color:var(--evcc-grid)}.color-self[data-v-d9a8a664]{color:var(--evcc-self)}.color-export[data-v-d9a8a664]{color:var(--evcc-export)}.details-icon[data-v-d9a8a664]{text-align:center;width:30px;margin-right:.25rem;white-space:nowrap;flex-shrink:0}.btn[data-v-1ff39d22]{flex-basis:0;white-space:nowrap}.vehicle-soc[data-v-61aaba9a]{--height:38px;--thumb-overlap:3px;--thumb-width:3px;--thumb-horizontal-padding:15px;--label-height:26px;position:relative;height:var(--height)}.progress[data-v-61aaba9a]{height:100%;font-size:1rem}.progress-bar.bg-muted[data-v-61aaba9a]{color:var(--white)}.bg-light[data-v-61aaba9a]{color:var(--bs-gray-dark)}.target-label[data-v-61aaba9a]{width:3em;margin-left:-1.5em;height:var(--label-height);position:absolute;top:calc(var(--label-height)*-1 + var(--thumb-overlap)*-1);text-align:center;color:var(--bs-gray-dark);font-size:1rem;opacity:1;transition:opacity .2s ease 1s}.target-slider[data-v-61aaba9a]{-webkit-appearance:none;position:absolute;top:calc(var(--thumb-overlap)*-1);left:calc(var(--thumb-horizontal-padding)*-1);height:calc(100% + var(--thumb-overlap)*2);width:calc(100% + var(--thumb-horizontal-padding)*2);background:transparent}.target-slider[data-v-61aaba9a]:focus{outline:none}.target-slider[data-v-61aaba9a]::-webkit-slider-runnable-track{position:relative;background:transparent;border:none;height:100%;cursor:pointer}.target-slider[data-v-61aaba9a]::-moz-range-track{background:transparent;border:none;height:100%;cursor:pointer}.target-slider[data-v-61aaba9a]::-webkit-slider-thumb{-webkit-appearance:none;position:relative;top:calc(var(--label-height)*-1);height:100%;width:var(--thumb-width);padding:var(--label-height) var(--thumb-horizontal-padding) 0;box-sizing:content-box;background-clip:content-box;background-color:var(--bs-gray-dark);cursor:-webkit-grab;cursor:grab;border:none;opacity:1;-webkit-transition:opacity .2s ease 1s;transition:opacity .2s ease 1s}.target-slider[data-v-61aaba9a]::-moz-range-thumb{position:relative;top:calc(var(--label-height)*-1);height:100%;width:var(--thumb-width);padding:0 var(--thumb-horizontal-padding) 0;box-sizing:content-box;background-clip:content-box;background-color:var(--bs-gray-dark);cursor:grab;border:none;opacity:1;-moz-transition:opacity .5s ease 1s;transition:opacity .5s ease 1s}.target--slider-hidden .target-label[data-v-61aaba9a],.target--slider-hidden .target-slider[data-v-61aaba9a]::-webkit-slider-thumb{opacity:0}.target--slider-hidden .target-label[data-v-61aaba9a],.target--slider-hidden .target-slider[data-v-61aaba9a]::-moz-range-thumb{opacity:0}.target:hover .target-label[data-v-61aaba9a],.target:hover .target-slider[data-v-61aaba9a]::-webkit-slider-thumb{opacity:1;transition-delay:0s}.target:hover .target-label[data-v-61aaba9a],.target:hover .target-slider[data-v-61aaba9a]::-moz-range-thumb{opacity:1;transition-delay:0s} \ No newline at end of file +:root{--evcc-green:#66d85a;--evcc-dark-green:#3aba2c;--evcc-yellow:#ffe000;--evcc-grid:var(--bs-gray-dark);--evcc-self:var(--evcc-dark-green);--evcc-export:var(--evcc-yellow);--bs-primary:var(--evcc-dark-green);--bs-primary-rgb:58,186,44}.bg-primary{background-color:var(--evcc-dark-green)!important}a{color:var(--evcc-dark-green)}.progress-bar-animated{animation-direction:reverse}.bg-muted{opacity:.25}.btn-primary{background-color:var(--bs-gray-dark);border-color:var(--bs-gray-dark)}.btn-primary:hover{background-color:var(--evcc-dark-green);border-color:var(--evcc-dark-green)}.icon[data-v-785de62e]{color:#0fdd42}.icon[data-v-1eecc7b7]{color:#0fdd42;display:inline-block}.sponsor-button[data-v-1eecc7b7]{touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.support-button .solid[data-v-1eecc7b7]{display:none}.support-button:hover .solid[data-v-1eecc7b7]{display:inline-block}.support-button:hover .outline[data-v-1eecc7b7]{display:none}.logo[data-v-152e128c]{width:85px}.app[data-v-152e128c]{min-height:100vh}.title[data-v-152e128c]{position:relative;top:.1rem}.battery[data-v-2dcca16c]{transform:translateX(.35rem) rotate(-90deg);transition-property:transform;transition-duration:.25s;transition-timing-function:ease}.power--in .battery[data-v-2dcca16c]{transform:translateX(.7rem) rotate(-90deg)}.power--out .battery[data-v-2dcca16c]{transform:translateX(0) rotate(-90deg)}.arrow[data-v-2dcca16c]{margin-left:-.2rem;opacity:0;transform:translateX(-.5rem);transition-property:opacity,transform;transition-duration:.25s;transition-timing-function:ease}.power--in .arrow[data-v-2dcca16c]{opacity:1;transform:translateX(-1rem) scaleX(1)}.power--out .arrow[data-v-2dcca16c]{opacity:1;transform:translateX(0) scaleX(1)}.label-bar[data-v-17da7e54]{width:0;margin:0;height:1.7rem;padding:.6rem 0;opacity:1;overflow:hidden}.label-bar-scale--hidden[data-v-17da7e54]{opacity:0}.label-bar-scale[data-v-17da7e54]{border:1px solid var(--bs-gray);height:.5rem;background:none;display:flex;justify-content:center;align-items:center;white-space:nowrap;border-radius:0;transition:border-radius .5s linear}.label-bar--top .label-bar-scale[data-v-17da7e54]{border-bottom:none}.label-bar--bottom .label-bar-scale[data-v-17da7e54]{border-top:none}.label-bar--top.label-bar--first .label-bar-scale[data-v-17da7e54]{border-top-left-radius:4px}.label-bar--top.label-bar--last .label-bar-scale[data-v-17da7e54]{border-top-right-radius:4px}.label-bar--bottom.label-bar--first .label-bar-scale[data-v-17da7e54]{border-bottom-left-radius:4px}.label-bar--bottom.label-bar--last .label-bar-scale[data-v-17da7e54]{border-bottom-right-radius:4px}.label-bar:not(.label-bar--first) .label-bar-scale[data-v-17da7e54]{border-left:none}.label-bar-icon[data-v-17da7e54]{background-color:#fff;color:var(--bs-gray);padding:0 .3rem;opacity:1}.label-bar--top .label-bar-icon[data-v-17da7e54]{margin-top:-6px}.label-bar--bottom .label-bar-icon[data-v-17da7e54]{margin-top:6px}.label-bar--hidden[data-v-17da7e54],.label-bar--hide-icon .label-bar-icon[data-v-17da7e54]{opacity:0}.site-progress[data-v-787f3c3e]{--height:38px;height:var(--height);margin:.25rem 0;border-radius:5px;display:flex;overflow:hidden}.site-progress-bar[data-v-787f3c3e]{display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative;width:0}.visualization--ready .site-progress-bar[data-v-787f3c3e]{transition-property:width;transition-duration:.5s;transition-timing-function:linear}.grid-import[data-v-787f3c3e]{background-color:var(--evcc-grid);color:var(--bs-white)}.self-consumption[data-v-787f3c3e]{background-color:var(--evcc-self);color:var(--bs-white)}.pv-export[data-v-787f3c3e]{background-color:var(--evcc-export);color:var(--bs-dark)}.power[data-v-787f3c3e]{display:block;margin:0 .2rem;white-space:nowrap;overflow:hidden}.visualization--ready[data-v-787f3c3e] .label-bar{transition-property:width,opacity;transition-duration:.5s,.25s;transition-timing-function:linear,ease}.visualization--ready[data-v-787f3c3e] .label-bar-icon{transition:opacity .25s ease-in}.energyflow[data-v-d9a8a664]{cursor:pointer}.color-grid[data-v-d9a8a664]{color:var(--evcc-grid)}.color-self[data-v-d9a8a664]{color:var(--evcc-self)}.color-export[data-v-d9a8a664]{color:var(--evcc-export)}.details-icon[data-v-d9a8a664]{text-align:center;width:30px;margin-right:.25rem;white-space:nowrap;flex-shrink:0}.btn[data-v-1ff39d22]{flex-basis:0;white-space:nowrap}.vehicle-soc[data-v-3f6681ce]{--height:38px;--thumb-overlap:3px;--thumb-width:3px;--thumb-horizontal-padding:15px;--label-height:26px;position:relative;height:var(--height)}.progress[data-v-3f6681ce]{height:100%;font-size:1rem}.progress-bar.bg-muted[data-v-3f6681ce]{color:var(--white)}.bg-light[data-v-3f6681ce]{color:var(--bs-gray-dark)}.target-label[data-v-3f6681ce]{width:3em;margin-left:-1.5em;height:var(--label-height);position:absolute;top:calc(var(--label-height)*-1 + var(--thumb-overlap)*-1);text-align:center;color:var(--bs-gray-dark);font-size:1rem;opacity:1;transition:opacity .2s ease 1s}.target-slider[data-v-3f6681ce]{-webkit-appearance:none;position:absolute;top:calc(var(--thumb-overlap)*-1);left:calc(var(--thumb-horizontal-padding)*-1);height:calc(100% + var(--thumb-overlap)*2);width:calc(100% + var(--thumb-horizontal-padding)*2);background:transparent}.target-slider[data-v-3f6681ce]:focus{outline:none}.target-slider[data-v-3f6681ce]::-webkit-slider-runnable-track{position:relative;background:transparent;border:none;height:100%;cursor:pointer}.target-slider[data-v-3f6681ce]::-moz-range-track{background:transparent;border:none;height:100%;cursor:pointer}.target-slider[data-v-3f6681ce]::-webkit-slider-thumb{-webkit-appearance:none;position:relative;top:calc(var(--label-height)*-1);height:100%;width:var(--thumb-width);padding:var(--label-height) var(--thumb-horizontal-padding) 0;box-sizing:content-box;background-clip:content-box;background-color:var(--bs-gray-dark);cursor:-webkit-grab;cursor:grab;border:none;opacity:1;-webkit-transition:opacity .2s ease 1s;transition:opacity .2s ease 1s}.target-slider[data-v-3f6681ce]::-moz-range-thumb{position:relative;top:calc(var(--label-height)*-1);height:100%;width:var(--thumb-width);padding:0 var(--thumb-horizontal-padding) 0;box-sizing:content-box;background-clip:content-box;background-color:var(--bs-gray-dark);cursor:grab;border:none;opacity:1;-moz-transition:opacity .5s ease 1s;transition:opacity .5s ease 1s}.target--slider-hidden .target-label[data-v-3f6681ce],.target--slider-hidden .target-slider[data-v-3f6681ce]::-webkit-slider-thumb{opacity:0}.target--slider-hidden .target-label[data-v-3f6681ce],.target--slider-hidden .target-slider[data-v-3f6681ce]::-moz-range-thumb{opacity:0}.target:hover .target-label[data-v-3f6681ce],.target:hover .target-slider[data-v-3f6681ce]::-webkit-slider-thumb{opacity:1;transition-delay:0s}.target:hover .target-label[data-v-3f6681ce],.target:hover .target-slider[data-v-3f6681ce]::-moz-range-thumb{opacity:1;transition-delay:0s} \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index db9709e2b..1c7306f6f 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1,4 +1,4 @@ -