This commit is contained in:
romankko2 committed 2023-09-18 12:22:24 +02:00
1 parent 4ed354904c
commit b16ff2e34f
4 files changed
+63 -95

No files matched your search

@@ -184,29 +184,30 @@ export default {
const end = date.setHours(Math.round(event.endTimeMinutes / 60), Math.round(event.endTimeMinutes % 60), 0) const end = date.setHours(Math.round(event.endTimeMinutes / 60), Math.round(event.endTimeMinutes % 60), 0)
const split = this.splits.find(split => split.id == newSplit ) const split = this.splits.find(split => split.id == newSplit )
if(this.$route.name == 'Dashboard - Tasks') { if(this.$route.name == 'Dashboard - Tasks') {
const editedSubtask = { const editedSubtask = {
...event.subtask, ...event.subtask,
timeblocks: [...event.subtask.timeblocks, { timeblocks: [...event.subtask.timeblocks, {
id: event._timeblock_id, id: event._timeblock_id,
is_finished: 0, is_finished: 0,
start: tmUtils.formatDateTimeForBackend(start), start: tmUtils.formatDateTimeForBackend(start),
end: tmUtils.formatDateTimeForBackend(end) end: tmUtils.formatDateTimeForBackend(end)
}], }],
timesheets: event.subtask.timesheets.map((timesheet) => { timesheets: event.subtask.timesheets.map((timesheet) => {
delete timesheet.employee_name delete timesheet.employee_name
return timesheet return timesheet
}) })
} }
try { try {
const { subtask } = await this.$axios.put_auth(`v1/subtasks/${editedSubtask.id}`, editedSubtask) const { subtask } = await this.$axios.put_auth(`v1/subtasks/${editedSubtask.id}`, editedSubtask)
this.$events.emit('on-subtask-edited', subtask) this.$events.emit('on-subtask-edited', subtask)
if (subtask.employee_id == this.$store.getters['auth/user'].id) if (subtask.employee_id == this.$store.getters['auth/user'].id)
this.$events.emit('show-task-add-time-modal', { subtask }) this.$events.emit('show-task-add-time-modal', { subtask })
} catch (error) { } catch (error) {
this.$toast.error(error.message || error) this.$toast.error(error.message || error)
} }
} else if(this.$route.name == 'Dashboard - Teams') { } else if(this.$route.name == 'Dashboard - Teams') {
const editedSubtask = { const editedSubtask = {
...event.subtask, ...event.subtask,
@@ -8,7 +8,6 @@
:items="enrichedEmployees" :items="enrichedEmployees"
item-title="_fullName" item-title="_fullName"
item-value="id" item-value="id"
:disabled="isSortingActive"
/> />
<v-text-field <v-text-field
v-model="searchQuery" v-model="searchQuery"
@@ -18,7 +17,6 @@
prepend-inner-icon="mdi-magnify" prepend-inner-icon="mdi-magnify"
@input="onInput" @input="onInput"
type="text" type="text"
:disabled="isSortingActive"
></v-text-field> ></v-text-field>
<v-select <v-select
v-model="sortOrder" v-model="sortOrder"
@@ -44,7 +42,14 @@ export default {
return { return {
selectedEmployeeId: null, selectedEmployeeId: null,
searchQuery: '', searchQuery: '',
sortOrder: null sortOrder: null,
sortOptions: [
{ text: 'Zrušiť filter', value: null },
{ text: 'Názov (A-Z)', value: 'nameAsc' },
{ text: 'Názov (Z-A)', value: 'nameDesc' },
{ text: 'Dátum (Najnovší - Najstarší)', value: 'deadlineDesc' },
{ text: 'Dátum (Najstarší - Najnovší)', value: 'deadlineAsc' }
]
} }
}, },
@@ -53,31 +58,13 @@ export default {
}, },
computed: { computed: {
...mapGetters('tm', ['enrichedEmployees']), ...mapGetters('tm', ['enrichedEmployees'])
sortOptions() {
return [
{ text: 'Zrušiť filter', value: null },
{ text: 'Názov (A-Z)', value: 'nameAsc' },
{ text: 'Názov (Z-A)', value: 'nameDesc' },
{ text: 'Dátum (Najnovší - Najstarší)', value: 'deadlineDesc' },
{ text: 'Dátum (Najstarší - Najnovší)', value: 'deadlineAsc' }
]
},
isSortingActive() {
return this.sortOrder !== null && this.sortOrder !== 'null'
},
}, },
methods: { methods: {
onInput() { onInput() {
this.$emit('search', this.searchQuery) this.$emit('search', this.searchQuery)
}, },
updateSortOrder() {
this.$emit('update-sort-order', this.sortOrder)
}
}, },
watch: { watch: {
@@ -85,8 +72,8 @@ export default {
this.$emit('employee-selected', this.selectedEmployeeId) this.$emit('employee-selected', this.selectedEmployeeId)
}, },
sortOrder() { sortOrder(value) {
this.updateSortOrder() this.$emit('update-sort-order', value)
} }
} }
} }
@@ -4,7 +4,7 @@
<Z-tasks-search @search="onSearch" @employee-selected="onEmployeeSelected" @update-sort-order="onUpdateSortOrder" /> <Z-tasks-search @search="onSearch" @employee-selected="onEmployeeSelected" @update-sort-order="onUpdateSortOrder" />
<W-loadable :content="filteredOngoingTasks" :emptyMessage="searchQuery.length ? 'Neboli nájdené žiadne úlohy' : 'Nenašli sa žiadne záznamy'"> <W-loadable :content="filteredOngoingTasks" :emptyMessage="searchQuery.length ? 'Neboli nájdené žiadne úlohy' : 'Nenašli sa žiadne záznamy'">
<A-ongoing-table :subtasks="selectedTasks" /> <A-ongoing-table :subtasks="filteredOngoingTasks" />
</W-loadable> </W-loadable>
</div> </div>
@@ -40,51 +40,41 @@ export default {
if (!this.ongoingSubtasks) if (!this.ongoingSubtasks)
return null return null
return this.ongoingSubtasks.filter(subtask => { let filteredSubtasks = this.ongoingSubtasks.filter(subtask => {
return this.filterParams(this.searchQuery, subtask.master_task?.name || subtask.title) || this.filterParams(this.searchQuery, subtask.project_code) return this.filterParams(this.searchQuery, subtask.master_task?.name || subtask.title) || this.filterParams(this.searchQuery, subtask.project_code)
}) })
},
sortedOngoingTasks() {
if (!this.ongoingSubtasks)
return null
let sortedTasks = this.ongoingSubtasks
//Sorting by name A-Z //Sorting by name A-Z
if (this.sortOrder === 'nameAsc') { if (this.sortOrder === 'nameAsc') {
sortedTasks.sort((a, b) => { filteredSubtasks.sort((a, b) => {
const nameA = (a.title || a.master_task || '').toLowerCase() const nameA = (a.title || a.master_task || '').toLowerCase()
const nameB = (b.title || b.master_task || '').toLowerCase() const nameB = (b.title || b.master_task || '').toLowerCase()
return nameA.localeCompare(nameB) return nameA.localeCompare(nameB)
}) })
//Sorting by name Z-A //Sorting by name Z-A
} else if (this.sortOrder === 'nameDesc') { } else if (this.sortOrder === 'nameDesc') {
sortedTasks.sort((a, b) => { filteredSubtasks.sort((a, b) => {
const nameA = (a.title || a.master_task || '').toLowerCase() const nameA = (a.title || a.master_task || '').toLowerCase()
const nameB = (b.title || b.master_task || '').toLowerCase() const nameB = (b.title || b.master_task || '').toLowerCase()
return nameB.localeCompare(nameA) return nameB.localeCompare(nameA)
}) })
//Sorting by date Newest-Oldest //Sorting by date Newest-Oldest
} else if (this.sortOrder === 'deadlineDesc') { } else if (this.sortOrder === 'deadlineDesc') {
sortedTasks.sort((a, b) => { filteredSubtasks.sort((a, b) => {
const deadlineA = a.deadline ? new Date(a.deadline) : new Date(this.getMasterTaskDeadline(a)) 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)) const deadlineB = b.deadline ? new Date(b.deadline) : new Date(this.getMasterTaskDeadline(b))
return deadlineB - deadlineA return deadlineB - deadlineA
}) })
//Sorting by date Oldest-Newest //Sorting by date Oldest-Newest
} else if (this.sortOrder === 'deadlineAsc') { } else if (this.sortOrder === 'deadlineAsc') {
sortedTasks.sort((a, b) => { filteredSubtasks.sort((a, b) => {
const deadlineA = a.deadline ? new Date(a.deadline) : new Date(this.getMasterTaskDeadline(a)) 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)) const deadlineB = b.deadline ? new Date(b.deadline) : new Date(this.getMasterTaskDeadline(b))
return deadlineA - deadlineB return deadlineA - deadlineB
}) })
} }
return sortedTasks
},
selectedTasks() { return filteredSubtasks
return this.sortOrder ? this.sortedOngoingTasks : this.filteredOngoingTasks
} }
}, },
@@ -4,7 +4,7 @@
<Z-tasks-search @search="onSearch" @employee-selected="onEmployeeSelected" @update-sort-order="onUpdateSortOrder" /> <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'"> <W-loadable :content="filteredUnscheduledTasks" :emptyMessage="searchQuery.length ? 'Neboli nájdené žiadne úlohy' : 'Nenašli sa žiadne záznamy'">
<A-unscheduled-table :subtasks="selectedTasks" /> <A-unscheduled-table :subtasks="filteredUnscheduledTasks" />
</W-loadable> </W-loadable>
</div> </div>
@@ -39,51 +39,41 @@ export default {
if (!this.unscheduledSubtasks) if (!this.unscheduledSubtasks)
return null return null
return this.unscheduledSubtasks.filter(subtask => { let filteredSubtasks = this.unscheduledSubtasks.filter(subtask => {
return this.filterParams(this.searchQuery, subtask.master_task?.name || subtask.title) || this.filterParams(this.searchQuery, subtask.project_code) 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') { if (this.sortOrder === 'nameAsc') {
sortedTasks.sort((a, b) => { filteredSubtasks.sort((a, b) => {
const nameA = (a.title || a.master_task || '').toLowerCase() const nameA = (a.title || a.master_task || '').toLowerCase()
const nameB = (b.title || b.master_task || '').toLowerCase() const nameB = (b.title || b.master_task || '').toLowerCase()
return nameA.localeCompare(nameB) return nameA.localeCompare(nameB)
}) })
//Sorting by name Z-A //Sorting by name Z-A
} else if (this.sortOrder === 'nameDesc') { } else if (this.sortOrder === 'nameDesc') {
sortedTasks.sort((a, b) => { filteredSubtasks.sort((a, b) => {
const nameA = (a.title || a.master_task || '').toLowerCase() // const { nameA, nameB } = this._getTaskTitleOrMastertaskName(a, b)
const nameB = (b.title || b.master_task || '').toLowerCase() const nameA = (a.title || a.master_task || '').toLowerCase()
return nameB.localeCompare(nameA) const nameB = (b.title || b.master_task || '').toLowerCase()
}) return nameB.localeCompare(nameA)
})
//Sorting by date Newest-Oldest //Sorting by date Newest-Oldest
} else if (this.sortOrder === 'deadlineDesc') { } else if (this.sortOrder === 'deadlineDesc') {
sortedTasks.sort((a, b) => { filteredSubtasks.sort((a, b) => {
const deadlineA = a.deadline ? new Date(a.deadline) : new Date(this.getMasterTaskDeadline(a)) 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)) const deadlineB = b.deadline ? new Date(b.deadline) : new Date(this.getMasterTaskDeadline(b))
return deadlineB - deadlineA return deadlineB - deadlineA
}) })
//Sorting by date Oldest-Newest //Sorting by date Oldest-Newest
} else if (this.sortOrder === 'deadlineAsc') { } else if (this.sortOrder === 'deadlineAsc') {
sortedTasks.sort((a, b) => { filteredSubtasks.sort((a, b) => {
const deadlineA = a.deadline ? new Date(a.deadline) : new Date(this.getMasterTaskDeadline(a)) 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)) const deadlineB = b.deadline ? new Date(b.deadline) : new Date(this.getMasterTaskDeadline(b))
return deadlineA - deadlineB return deadlineA - deadlineB
}) })
} }
return sortedTasks
},
selectedTasks() { return filteredSubtasks
return this.sortOrder ? this.sortedUnscheduledTasks : this.filteredUnscheduledTasks
} }
}, },