1. Timer auf 60 Minuten und 10 Minuten vorher eine Warnung

11. Continue statt Review Dataset (im Step 3)
12. keywords auf default 'uncontrolled' einfrieren
14. Lizenzen mit Links versehen
19. Timezone: 'timezone' => 'Europe/Vienna'
20. angefangen mit RDR -> TETHYS Unbenennungen
21. translated validation ausgebessert
22. dataset als Typescript Instanz
This commit is contained in:
Arno Kaimbacher 2019-11-21 18:43:56 +01:00
parent 300c8a13a9
commit 4b8f2a63d8
45 changed files with 1729 additions and 826 deletions

View file

@ -0,0 +1,118 @@
import EasyTimer from 'easytimer';
import { Component, Vue, Prop, Watch } from 'vue-property-decorator';
@Component
export default class VueCountdown extends Vue {
// props: {
// seconds: Number,
// countdown: Boolean,
// message: String,
// date: String,
// units: Array,
// start: {
// type: Boolean,
// default: true
// }
// },
@Prop(Number)
seconds;
@Prop(Boolean)
countdown;
@Prop([String])
message;
@Prop([String])
date;
@Prop([Array])
units;
@Prop({ default: true, type: Boolean })
start: boolean;
// data () {
// return {
// timer: null,
// time: '',
// label: this.message ? this.message : 'Time\'s up!',
// timerUnits: this.units ? this.units : ['hours', 'minutes', 'seconds'],
// timerOptions: {}
// };
// },
warningSeconds: Number = this.seconds;
timer: EasyTimer = null;
time: string = '';
label: string = this.message ? this.message : 'Time\'s up!';
timerUnits = this.units ? this.units : ['hours', 'minutes', 'seconds'];
timerOptions = {
startValues: {},
// target: {},
countdown: true,
current_page: 0,
data: []
};
get parsedDate(): number {
if (!this.date) {
return 0;
}
return Date.parse(this.date);
}
created() {
this.timer = new EasyTimer();
const parsedDate = this.parsedDate;
const now = Date.now();
let seconds = this.seconds;
this.timerOptions.countdown = true;
// = {
// countdown: true
// };
if (!parsedDate && this.date) {
throw new Error('Please provide valid date');
}
if (now < parsedDate) {
seconds = (parsedDate - now) / 1000;
}
this.timerOptions.startValues = {
seconds: seconds
};
if (this.start) {
this.timer.start(this.timerOptions);
}
this.time = this.timer.getTimeValues().toString(this.timerUnits);
this.timer.addEventListener('secondsUpdated', this.onTimeChange.bind(this));
this.timer.addEventListener('targetAchieved', this.onTimeExpire.bind(this));
}
onTimeChange() {
this.warningSeconds = this.timer.getTotalTimeValues().seconds;
this.time = this.timer.getTimeValues().toString(this.timerUnits);
}
onTimeExpire() {
this.$emit('time-expire');
this.time = this.label;
}
@Watch('start')
onStartChanged(newValue) {
if (newValue) {
this.timer.start(this.timerOptions);
} else {
this.timer.stop();
}
}
}