inventur/app/js/components/TweenedNumber.vue
2020-01-13 16:09:25 +01:00

64 lines
1.1 KiB
Vue

<template>
<div class="tweened">
<div>{{ intAnimated }}</div>
<div v-if="precision>0">
,{{ deciAnimated }}
</div>
<div v-else />
<div>{{ einheit }}</div>
</div>
</template>
<script>
import gsap from 'gsap';
import './TweenedNumber.css';
export default {
name: "TweenedNumber",
props: {
wert: {
type: Number,
default: 0
},
einheit: {
type: String,
default: ""
},
precision: {
type: Number,
default: 0
}
},
data(){
return {
tweenedValue: 0,
}
},
computed: {
valueAnimated() {
return this.tweenedValue.toLocaleString(
"de-DE",
{
maximumFractionDigits: 2,
minimumFractionDigits: this.precision
}
);
},
intAnimated() {
return this.valueAnimated.split(',')[0];
},
deciAnimated() {
return this.valueAnimated.split(',')[1];
}
},
watch: {
wert: {
handler(newValue) {
gsap.to(this.$data, 0.5, {tweenedValue: newValue });
},
deep: true
}
}
}
</script>