Browse Source

WIP worktime

modals-to-spa
stingl 4 years ago
parent
commit
ef8f2b1e17
  1. 9
      index.html
  2. 44
      js/app.js

9
index.html

@ -19,6 +19,15 @@
<nav class="navbar navbar-expand-lg navbar-light bg-light"> <nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand"> <a class="navbar-brand">
<img :src="dashboardLogo" alt="logo" class="logo-nav float-end" v-if="dashboardLogo"/> <img :src="dashboardLogo" alt="logo" class="logo-nav float-end" v-if="dashboardLogo"/>
<div>
<template v-if="worktimeTracker.tracking">
<i class="far fa-pause-circle"></i>
<i class="far fa-stop-circle" @click="stopTracking(worktimeTracker)"></i>
</template>
<a href="javascript:" @click="startTracking(worktimeTracker)" v-else>
<i class="far fa-play-circle"></i>
</a>
</div>
<h5 class="brand-title">Timetrack</h5> <h5 class="brand-title">Timetrack</h5>
</a> </a>
</nav> </nav>

44
js/app.js

@ -12,6 +12,13 @@ const TimeTrack = {
}, },
tickets: [], tickets: [],
archive: [], archive: [],
worktimeTracker: {
tracking: false,
number: 'Worktime',
trackingStarted: null,
trackingStopped: null,
history: []
},
selectedTicket: null, selectedTicket: null,
searchQuery: '', searchQuery: '',
portal: '', portal: '',
@ -115,8 +122,11 @@ const TimeTrack = {
this.tickets.push(newTicket); this.tickets.push(newTicket);
this.updateStorage(); this.updateStorage();
}, },
startTracking(ticket) { startTracking(ticket, individual = false) {
if (!individual) {
this.stopTrackingTicket(); this.stopTrackingTicket();
}
ticket.trackingStarted = moment(); ticket.trackingStarted = moment();
ticket.tracking = true; ticket.tracking = true;
@ -137,13 +147,18 @@ const TimeTrack = {
ticket.trackingStopped.diff(ticket.trackingStarted) ticket.trackingStopped.diff(ticket.trackingStarted)
).as('minutes'); ).as('minutes');
let historyEntry = {
ticket.history.push({
trackingStarted: ticket.trackingStarted, trackingStarted: ticket.trackingStarted,
trackingStopped: ticket.trackingStopped, trackingStopped: ticket.trackingStopped,
manually: false, manually: false,
minutes: Math.round(minutesSpent) minutes: Math.round(minutesSpent)
}); };
if (ticket.paused) {
historyEntry.pause = true;
}
ticket.history.push();
ticket.trackingStarted = null; ticket.trackingStarted = null;
ticket.trackingStopped = null; ticket.trackingStopped = null;
@ -151,6 +166,27 @@ const TimeTrack = {
this.$forceUpdate(); this.$forceUpdate();
this.updateStorage(); this.updateStorage();
}, },
pauseTracking(ticket) {
ticket.trackingStopped = moment();
ticket.tracking = false;
ticket.paused = true;
this.stopTracking(ticket);
},
resumeTracking(ticket) {
ticket.trackingStarted = moment();
ticket.tracking = true;
ticket.paused = false;
let noNoTickets = ['#1920', '#3110', '#2492', '#2419', '#1256'];
if (this.fun && noNoTickets.includes(ticket.number)) {
playSound(oneOf(this.sounds.bad))
}
this.$forceUpdate();
this.updateStorage();
},
formattedDate(date) { formattedDate(date) {
return moment(date).format('llll'); return moment(date).format('llll');
}, },