mirror of
https://bitbucket.org/studiotem/jandl-taskmanager-app.git
synced 2026-10-21 22:39:34 +00:00
[CR] sorting v-select, [bugy]
This commit is contained in:
1 parent
7c94f4c576
commit
4ed354904c
16 files changed
+195
-23
No files matched your search
@@ -14,7 +14,7 @@
|
||||
<tr class="cursor-pointer" v-for="subtask in subtasks" :key="subtask.id" @click.stop="editTask(subtask, false)">
|
||||
|
||||
<td>{{ subtask.project_code }}</td>
|
||||
<td>{{ subtask.title ?? subtask.master_task?.name ?? subtask.master_task }}</td>
|
||||
<td>{{ subtask.title ?? subtask.master_task }}</td>
|
||||
<td v-if="subtask?.deadline">{{ getDeadline(subtask) }}</td>
|
||||
<v-tooltip text="Deadline z Mastertasku" location="end">
|
||||
<template v-slot:activator="{ props }">
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<div>
|
||||
|
||||
<Z-tasks-search @search="onSearch" @employee-selected="onEmployeeSelected" />
|
||||
<Z-tasks-search @search="onSearch" @employee-selected="onEmployeeSelected" @update-sort-order="onUpdateSortOrder" />
|
||||
|
||||
<W-loadable :content="filteredUnscheduledTasks" :emptyMessage="searchQuery.length ? 'Neboli nájdené žiadne úlohy' : 'Nenašli sa žiadne záznamy'">
|
||||
<A-unscheduled-table :subtasks="filteredUnscheduledTasks" />
|
||||
<A-unscheduled-table :subtasks="selectedTasks" />
|
||||
</W-loadable>
|
||||
|
||||
</div>
|
||||
@@ -23,7 +23,8 @@ export default {
|
||||
|
||||
data() {
|
||||
return {
|
||||
searchQuery: ''
|
||||
searchQuery: '',
|
||||
sortOrder: null
|
||||
}
|
||||
},
|
||||
|
||||
@@ -32,15 +33,57 @@ export default {
|
||||
},
|
||||
|
||||
computed: {
|
||||
...mapGetters('tm', ['unscheduledSubtasks']),
|
||||
...mapGetters('tm', ['unscheduledSubtasks', 'mastertasks']),
|
||||
|
||||
filteredUnscheduledTasks() {
|
||||
if (!this.unscheduledSubtasks)
|
||||
return null
|
||||
|
||||
return this.unscheduledSubtasks.filter(subtask => {
|
||||
return this.filterParams(this.searchQuery, subtask.master_task?.name || subtask.master_task) || this.filterParams(this.searchQuery, subtask.project_code)
|
||||
return this.unscheduledSubtasks.filter(subtask => {
|
||||
return this.filterParams(this.searchQuery, subtask.master_task?.name || subtask.title) || this.filterParams(this.searchQuery, subtask.project_code)
|
||||
})
|
||||
},
|
||||
|
||||
sortedUnscheduledTasks() {
|
||||
if (!this.unscheduledSubtasks)
|
||||
return null
|
||||
|
||||
let sortedTasks = this.unscheduledSubtasks
|
||||
|
||||
//Sorting by name A-Z
|
||||
if (this.sortOrder === 'nameAsc') {
|
||||
sortedTasks.sort((a, b) => {
|
||||
const nameA = (a.title || a.master_task || '').toLowerCase()
|
||||
const nameB = (b.title || b.master_task || '').toLowerCase()
|
||||
return nameA.localeCompare(nameB)
|
||||
})
|
||||
//Sorting by name Z-A
|
||||
} else if (this.sortOrder === 'nameDesc') {
|
||||
sortedTasks.sort((a, b) => {
|
||||
const nameA = (a.title || a.master_task || '').toLowerCase()
|
||||
const nameB = (b.title || b.master_task || '').toLowerCase()
|
||||
return nameB.localeCompare(nameA)
|
||||
})
|
||||
//Sorting by date Newest-Oldest
|
||||
} else if (this.sortOrder === 'deadlineDesc') {
|
||||
sortedTasks.sort((a, b) => {
|
||||
const deadlineA = a.deadline ? new Date(a.deadline) : new Date(this.getMasterTaskDeadline(a))
|
||||
const deadlineB = b.deadline ? new Date(b.deadline) : new Date(this.getMasterTaskDeadline(b))
|
||||
return deadlineB - deadlineA
|
||||
})
|
||||
//Sorting by date Oldest-Newest
|
||||
} else if (this.sortOrder === 'deadlineAsc') {
|
||||
sortedTasks.sort((a, b) => {
|
||||
const deadlineA = a.deadline ? new Date(a.deadline) : new Date(this.getMasterTaskDeadline(a))
|
||||
const deadlineB = b.deadline ? new Date(b.deadline) : new Date(this.getMasterTaskDeadline(b))
|
||||
return deadlineA - deadlineB
|
||||
})
|
||||
}
|
||||
return sortedTasks
|
||||
},
|
||||
|
||||
selectedTasks() {
|
||||
return this.sortOrder ? this.sortedUnscheduledTasks : this.filteredUnscheduledTasks
|
||||
}
|
||||
},
|
||||
|
||||
@@ -53,9 +96,19 @@ export default {
|
||||
this.$store.dispatch('tm/loadUnscheduledSubtasks', id)
|
||||
},
|
||||
|
||||
onUpdateSortOrder(newSortOrder) {
|
||||
this.sortOrder = newSortOrder
|
||||
},
|
||||
|
||||
filterParams(searchQuery, row) {
|
||||
if(!row) return false
|
||||
return row.toLowerCase().includes(searchQuery.toLowerCase())
|
||||
},
|
||||
|
||||
getMasterTaskDeadline(subtask) {
|
||||
if(!this.mastertasks) return ''
|
||||
const masterTask = this.mastertasks.find((mt) => mt.id === subtask.master_task_id)
|
||||
return masterTask ? masterTask.deadline : ''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user