[tm@store] Added store

This commit is contained in:
Matej Glasnák committed 2023-02-15 15:56:24 +01:00
1 parent a1a410c54d
commit 774ca7b607
44 files changed
+989 -720

No files matched your search

@@ -11,9 +11,10 @@
<tbody>
<tr class="cursor-pointer" v-for="task in tasks" :key="task.id" @click.stop="editTask(task, false)">
<td>{{ task.project_code }}</td>
<td>{{ task.title }}</td>
<td>{{ (task.duration / 1000 / 60 / 60).toFixed(2) }} h</td>
<td>{{ task.master_task }}</td>
<td>{{ task.spent_time }} h</td>
<td class="task-action">
<div class="d-flex justify-start">
<img class="pencil-icon" :src="require('@/plugins/tm@overview/_img/pencil-icon.svg')" alt="pencil-icon" @click.stop="editTask(task, true)">
@@ -1,7 +1,7 @@
<template>
<div>
<Z-tasks-search @queryChange="onSearch" />
<Z-tasks-search @seach="onSearch" @employee-selected="onEmployeeSelected" />
<W-loadable :content="filteredUnscheduledTasks" :emptyMessage="searchQuery.length ? 'Neboli nájdené žiadne úlohy' : 'Nenašli sa žiadne záznamy'">
<A-unscheduled-table :tasks="filteredUnscheduledTasks" />
@@ -12,6 +12,7 @@
<script>
import ZTasksSearch from '@/plugins/tm@overview/_components/z-tasks-search.vue'
import { mapGetters } from 'vuex'
import AUnscheduledTable from './_components/a-unscheduled-table.vue'
export default {
components: {
@@ -21,46 +22,35 @@ export default {
data() {
return {
searchQuery: '',
unscheduledTasks: null
searchQuery: ''
}
},
ionViewWillEnter() {
this.$store.dispatch('tm/loadUnscheduledSubtasks')
},
computed: {
...mapGetters('tm', ['unscheduledSubtasks']),
filteredUnscheduledTasks() {
if (!this.unscheduledTasks)
if (!this.unscheduledSubtasks)
return null
if (!this.searchQuery)
return this.unscheduledTasks
return this.unscheduledTasks.filter((task) => {
return this.filterParams(this.searchQuery, task.title) || this.filterParams(this.searchQuery, task.project_code)
return this.unscheduledSubtasks.filter(subtask => {
return this.filterParams(this.searchQuery, subtask.master_task) || this.filterParams(this.searchQuery, subtask.project_code)
})
}
},
async created() {
await this._loadData()
},
mounted() {
this.$events.on('on-task-deleted', () => this._loadData())
},
methods: {
async _loadData() {
this.unscheduledTasks = null
try {
this.unscheduledTasks = await this.$axios.get_auth_data('v1/overview/unscheduled-tasks')
} catch (error) {
this.unscheduledTasks = {error}
}
},
onSearch(searchQuery) {
this.searchQuery = searchQuery
},
},
onEmployeeSelected(id) {
this.$store.dispatch('tm/loadUnscheduledSubtasks', id)
},
filterParams(searchQuery, row) {
return row.toLowerCase().includes(searchQuery.toLowerCase())