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 @@ @@ -19,6 +19,15 @@
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand">
<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>
</a>
</nav>

44
js/app.js

@ -12,6 +12,13 @@ const TimeTrack = { @@ -12,6 +12,13 @@ const TimeTrack = {
},
tickets: [],
archive: [],
worktimeTracker: {
tracking: false,
number: 'Worktime',
trackingStarted: null,
trackingStopped: null,
history: []
},
selectedTicket: null,
searchQuery: '',
portal: '',
@ -115,8 +122,11 @@ const TimeTrack = { @@ -115,8 +122,11 @@ const TimeTrack = {
this.tickets.push(newTicket);
this.updateStorage();
},
startTracking(ticket) {
startTracking(ticket, individual = false) {
if (!individual) {
this.stopTrackingTicket();
}
ticket.trackingStarted = moment();
ticket.tracking = true;
@ -137,13 +147,18 @@ const TimeTrack = { @@ -137,13 +147,18 @@ const TimeTrack = {
ticket.trackingStopped.diff(ticket.trackingStarted)
).as('minutes');
ticket.history.push({
let historyEntry = {
trackingStarted: ticket.trackingStarted,
trackingStopped: ticket.trackingStopped,
manually: false,
minutes: Math.round(minutesSpent)
});
};
if (ticket.paused) {
historyEntry.pause = true;
}
ticket.history.push();
ticket.trackingStarted = null;
ticket.trackingStopped = null;
@ -151,6 +166,27 @@ const TimeTrack = { @@ -151,6 +166,27 @@ const TimeTrack = {
this.$forceUpdate();
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) {
return moment(date).format('llll');
},