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:
parent
300c8a13a9
commit
4b8f2a63d8
45 changed files with 1729 additions and 826 deletions
118
resources/js/components/VueCountdown.ts
Normal file
118
resources/js/components/VueCountdown.ts
Normal 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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
editor.link_modal.header
Reference in a new issue