Browse Source

Introduce custom bookings;

modals-to-spa
stingl 4 years ago
parent
commit
0629753f73
  1. 87
      index.html
  2. 26
      js/app.js

87
index.html

@ -267,30 +267,42 @@
<span v-if="getTotalTime(ticket) > 0">Gesamtzeit: {{ getTotalTime(ticket) }}</span> <span v-if="getTotalTime(ticket) > 0">Gesamtzeit: {{ getTotalTime(ticket) }}</span>
<br> <br>
<div class="row"> <div class="row">
<div class="col-md-3"> <template v-if="experimental.customManualBooking">
<button class="btn btn-success ticket-action-button" <div class="col">
@click="bookTimeManually(ticket, 30)"> <button class="btn btn-info ticket-action-button"
+ ½h @click="showCustomBookingForTicket(ticket)"
</button> title="Manuelle Buchung">
</div> <i class="fas fa-user-edit"></i>
<div class="col-md-3"> </button>
<button class="btn btn-success ticket-action-button" </div>
@click="bookTimeManually(ticket, 60)"> </template>
+ 1h <template v-else>
</button>
</div> <div class="col-md-3">
<div class="col-md-3"> <button class="btn btn-success ticket-action-button"
<button class="btn btn-warning ticket-action-button" @click="bookTimeManually(ticket, 30)">
@click="bookTimeManually(ticket, -30)"> + ½h
- ½h </button>
</button> </div>
</div> <div class="col-md-3">
<div class="col-md-3"> <button class="btn btn-success ticket-action-button"
<button class="btn btn-warning ticket-action-button" @click="bookTimeManually(ticket, 60)">
@click="bookTimeManually(ticket, -60)"> + 1h
- 1h </button>
</button> </div>
</div> <div class="col-md-3">
<button class="btn btn-warning ticket-action-button"
@click="bookTimeManually(ticket, -30)">
- ½h
</button>
</div>
<div class="col-md-3">
<button class="btn btn-warning ticket-action-button"
@click="bookTimeManually(ticket, -60)">
- 1h
</button>
</div>
</template>
<div class="col"> <div class="col">
<button class="btn btn-secondary ticket-action-button" data-bs-dismiss="modal" <button class="btn btn-secondary ticket-action-button" data-bs-dismiss="modal"
@click="archiveTicket(ticketIndex)" title="Archivieren"> @click="archiveTicket(ticketIndex)" title="Archivieren">
@ -552,6 +564,33 @@
</div> </div>
</div> </div>
<!-- Custom Booking Modal -->
<div class="modal fade" id="customBookingModal" tabindex="-1" role="dialog" aria-labelledby="customBookingModalLabel"
aria-hidden="true" v-if="selectedTicket">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title"><i class="fas fa-user-edit"></i> Buchung für {{selectedTicket.number}}</h5>
<button type="button" class="btn-close" data-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="form-group">
<label>Zeit in Minuten:</label>
<input type="text" class="form-control" v-model="customBookingValue">
</div>
<div class="row">
<div class="col-6">
<a href="javascript:" class="btn btn-success btn-full-width" data-dismiss="modal" @click="makeCustomBooking()">+ Hinzubuchen</a>
</div>
<div class="col-6">
<a href="javascript:" class="btn btn-danger btn-full-width" data-dismiss="modal" @click="makeCustomBooking(true)">- Abbuchen</a>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Switcher Modal --> <!-- Switcher Modal -->
<div class="modal fade" id="switcherModal" tabindex="-1" role="dialog" aria-labelledby="switcherModalLabel" <div class="modal fade" id="switcherModal" tabindex="-1" role="dialog" aria-labelledby="switcherModalLabel"
aria-hidden="true" v-if="experimental.portalSwitcher"> aria-hidden="true" v-if="experimental.portalSwitcher">

26
js/app.js

@ -5,7 +5,8 @@ const TimeTrack = {
trackWorktime: false, trackWorktime: false,
boardView: false, boardView: false,
snippetSpace: false, snippetSpace: false,
portalSwitcher: true portalSwitcher: true,
customManualBooking: true
}, },
view: 'board', view: 'board',
theme: 'materia', theme: 'materia',
@ -49,7 +50,8 @@ const TimeTrack = {
] ]
}, },
snippets: [], snippets: [],
codeMirrors: [] codeMirrors: [],
customBookingValue: '',
} }
}, },
mounted() { mounted() {
@ -404,6 +406,26 @@ const TimeTrack = {
historyModal.toggle(); historyModal.toggle();
}, 50); }, 50);
}, },
showCustomBookingForTicket(ticket) {
this.selectedTicket = ticket;
this.$forceUpdate();
setTimeout(() => {
let customBookingModal = new bootstrap.Modal(document.getElementById('customBookingModal'));
customBookingModal.toggle();
}, 50);
},
makeCustomBooking(subtract = false) {
if (subtract) {
this.customBookingValue -= (this.customBookingValue * 2)
}
iziToast.show({
message: 'Buchung erfolgreich',
color: 'green'
});
this.bookTimeManually(this.selectedTicket, this.customBookingValue);
},
getPortalLink (test = false) { getPortalLink (test = false) {
let finalPortalName = this.portal.replaceAll('_', '-'); let finalPortalName = this.portal.replaceAll('_', '-');
finalPortalName.replaceAll('-test', ''); finalPortalName.replaceAll('-test', '');