![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/ts.corals.io/frontend/components/TimesheetCalender/ |
<template> <div class="row row-entry" :style="(index % 2 === 0) ? {'background-color': 'rgba(0, 0, 0, 0.05)'} :''"> <div class="col-md-5 col-12 entry-description"> <h5> <nuxt-link :to="`/clients/${entry.client_id}`">{{ entry.client_name }}</nuxt-link> - <nuxt-link :to="`/clients/${entry.client_id}/projects/${entry.project_id}`"> {{ entry.project }} </nuxt-link> </h5> <small class="d-block my-1">{{ entry.activity }}</small> <div class="" v-html="$getTextWithLinks(entry.description)"></div> <div> <template v-for="label in entry.labels"> <span class="badge badge-warning mr-1">{{ label.name }}</span> </template> </div> <template v-if="$isAdmin()"> <small> <nuxt-link :to="`/users/${entry.user_id}`"> <fa icon="user"/> {{ entry.user }} </nuxt-link> </small> </template> </div> <div class="col-md-5 col-8 entry-time text-left"> <strong class="bg-secondary rounded time-label text-center text-light p-1" v-b-tooltip.hover title="Time"> <fa icon="hourglass-start"/> {{ entry.time }} </strong> <template v-if="$isAdmin()"> <strong class="bg-danger rounded time-label text-center text-light p-1" v-b-tooltip.hover title="Cost"> <fa :icon="['far', 'money-bill-alt']"/> {{ entry.cost }} </strong> <strong v-if="evaluationEnabled" class="bg-info rounded time-label text-center text-light p-1" v-b-tooltip.hover title="Evaluation hours"> <fa icon="hourglass"/> {{ entry.evaluation_time }} </strong> <strong class="bg-success rounded time-label text-center text-light p-1" v-b-tooltip.hover title="Billable Amount"> <fa icon="coins"/> {{ entry.amount }} </strong> </template> <fa icon="check-circle" v-if="entry.has_reviewed" v-b-tooltip="'Has Reviewed'" class="text-success"/> </div> <div class="col-md-2 col-4 entry-action text-md-center d-flex d-md-block justify-content-around"> <b-link @click.prevent="editRecord(entry)" v-b-tooltip.hover title="Edit" v-if="entry.edit"> <fa icon="edit"/> </b-link> <b-link class="text-danger" @click.prevent="showDeleteModal(entry)" v-b-tooltip.hover title="Delete" v-if="entry.delete"> <fa icon="trash"/> </b-link> <b-link class="text-success" @click.prevent="markEntryAsReviewed(entry,index)" v-b-tooltip.hover title="Mark as Reviewed" v-if="entry.markAsReviewed && evaluationEnabled"> <b-spinner small v-if="reviewing"></b-spinner> <fa icon="check" v-else/> </b-link> <b-link :to="'/invoices/' + entry.invoice_id" v-if="entry.invoice_id && canAccess"> <fa icon="file-invoice"/> </b-link> </div> </div> </template> <script> export default { name: "Entry", inject: ['updateEntry'], props: { entry: { required: true }, index: { required: true } }, data() { return { reviewing: false } }, methods: { editRecord(entry) { this.$emit('edit-record', entry); }, showDeleteModal(entry) { this.$emit('show-delete-modal', entry) }, markEntryAsReviewed(entry, index) { this.reviewing = true; this.$axios.post(`timesheet/projects/${entry.project_id}/entries/${entry.id}/mark-entry-as-reviewed`) .then(response => { this.updateEntry(response.data.data) }).catch(err => { let message = err.message; if (err.response && err.response.data && err.response.data.message) { message = err.response.data.message; } this.$toast.error(message); }).finally(() => { this.reviewing = false; }) } }, computed: { evaluationEnabled() { return this.$store.getters.settings('evaluation_enabled'); }, canAccess() { if (this.$cant('view', 'invoice')) { return false; } return true; } } } </script> <style scoped> .row-entry .entry-description, .row-entry .entry-time, .row-entry .entry-action { padding: 1em; } </style>