123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- <template lang='pug'>
- v-toolbar.radius-7(flat, :color='$vuetify.theme.dark ? "grey darken-4-l3" : "grey lighten-3"')
- .body-2.mr-3 {{$t('common:duration.every')}}
- v-text-field(
- solo
- hide-details
- flat
- reverse
- v-model='minutes'
- style='flex: 1 1 70px;'
- )
- .body-2.mx-3 {{$t('common:duration.minutes')}}
- v-divider.mr-3
- v-text-field(
- solo
- hide-details
- flat
- reverse
- v-model='hours'
- style='flex: 1 1 70px;'
- )
- .body-2.mx-3 {{$t('common:duration.hours')}}
- v-divider.mr-3
- v-text-field(
- solo
- hide-details
- flat
- reverse
- v-model='days'
- style='flex: 1 1 70px;'
- )
- .body-2.mx-3 {{$t('common:duration.days')}}
- v-divider.mr-3
- v-text-field(
- solo
- hide-details
- flat
- reverse
- v-model='months'
- style='flex: 1 1 70px;'
- )
- .body-2.mx-3 {{$t('common:duration.months')}}
- v-divider.mr-3
- v-text-field(
- solo
- hide-details
- flat
- reverse
- v-model='years'
- style='flex: 1 1 70px;'
- )
- .body-2.mx-3 {{$t('common:duration.years')}}
- </template>
- <script>
- import _ from 'lodash'
- import moment from 'moment'
- export default {
- props: {
- value: {
- type: String,
- default: 'PT5M'
- }
- },
- data() {
- return {
- duration: moment.duration(0)
- }
- },
- computed: {
- years: {
- get() { return this.duration.years() || 0 },
- set(val) { this.rebuild(_.toNumber(val), 'years') }
- },
- months: {
- get() { return this.duration.months() || 0 },
- set(val) { this.rebuild(_.toNumber(val), 'months') }
- },
- days: {
- get() { return this.duration.days() || 0 },
- set(val) { this.rebuild(_.toNumber(val), 'days') }
- },
- hours: {
- get() { return this.duration.hours() || 0 },
- set(val) { this.rebuild(_.toNumber(val), 'hours') }
- },
- minutes: {
- get() { return this.duration.minutes() || 0 },
- set(val) { this.rebuild(_.toNumber(val), 'minutes') }
- }
- },
- watch: {
- value(newValue, oldValue) {
- this.duration = moment.duration(newValue)
- }
- },
- methods: {
- rebuild(val, unit) {
- if (!_.isFinite(val) || val < 0) {
- val = 0
- }
- const newDuration = {
- minutes: this.duration.minutes(),
- hours: this.duration.hours(),
- days: this.duration.days(),
- months: this.duration.months(),
- years: this.duration.years()
- }
- _.set(newDuration, unit, val)
- this.duration = moment.duration(newDuration)
- this.$emit('input', this.duration.toISOString())
- }
- },
- mounted() {
- this.duration = moment.duration(this.value)
- }
- }
- </script>
|