committed by
Julius Härtl
parent
014d7aa8ff
commit
818ffa2d57
@@ -136,7 +136,7 @@ return [
|
|||||||
['name' => 'comments_api#delete', 'url' => '/api/v1.0/cards/{cardId}/comments/{commentId}', 'verb' => 'DELETE'],
|
['name' => 'comments_api#delete', 'url' => '/api/v1.0/cards/{cardId}/comments/{commentId}', 'verb' => 'DELETE'],
|
||||||
|
|
||||||
// dashboard
|
// dashboard
|
||||||
['name' => 'dashboard_api#findAllWithDue', 'url' => '/api/v1.0/dashboard/dashboard/due', 'verb' => 'GET'],
|
['name' => 'dashboard_api#findAllWithDue', 'url' => '/api/v1.0/dashboard/due', 'verb' => 'GET'],
|
||||||
['name' => 'dashboard_api#findAssignedCards', 'url' => '/api/v1.0/dashboard/assigned', 'verb' => 'GET'],
|
['name' => 'dashboard_api#findAssignedCards', 'url' => '/api/v1.0/dashboard/assigned', 'verb' => 'GET'],
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
<AvatarList :users="card.assignedUsers" />
|
<AvatarList :users="card.assignedUsers" />
|
||||||
|
|
||||||
<CardMenu :id="card.id" />
|
<CardMenu :card="card" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
</transition>
|
</transition>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<CardMenu v-if="!editing && compactMode" :id="id" class="right" />
|
<CardMenu v-if="!editing && compactMode" :card="card" class="right" />
|
||||||
</div>
|
</div>
|
||||||
<transition-group v-if="card.labels.length"
|
<transition-group v-if="card.labels.length"
|
||||||
name="zoom"
|
name="zoom"
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div v-if="card">
|
||||||
<div @click.stop.prevent>
|
<div @click.stop.prevent>
|
||||||
<Actions v-if="canEdit && !isArchived">
|
<Actions v-if="canEdit && !isArchived">
|
||||||
<ActionButton v-if="showArchived === false && !isCurrentUserAssigned" icon="icon-user" @click="assignCardToMe()">
|
<ActionButton v-if="showArchived === false && !isCurrentUserAssigned" icon="icon-user" @click="assignCardToMe()">
|
||||||
@@ -80,9 +80,13 @@ export default {
|
|||||||
name: 'CardMenu',
|
name: 'CardMenu',
|
||||||
components: { Actions, ActionButton, Modal, Multiselect },
|
components: { Actions, ActionButton, Modal, Multiselect },
|
||||||
props: {
|
props: {
|
||||||
id: {
|
/* id: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: null,
|
default: null,
|
||||||
|
}, */
|
||||||
|
card: {
|
||||||
|
type: Object,
|
||||||
|
default: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@@ -103,9 +107,9 @@ export default {
|
|||||||
currentBoard: state => state.currentBoard,
|
currentBoard: state => state.currentBoard,
|
||||||
}),
|
}),
|
||||||
|
|
||||||
card() {
|
/* card() {
|
||||||
return this.$store.getters.cardById(this.id)
|
return this.$store.getters.cardById(this.id)
|
||||||
},
|
}, */
|
||||||
isBoardAndStackChoosen() {
|
isBoardAndStackChoosen() {
|
||||||
if (this.selectedBoard === '' || this.selectedStack === '') {
|
if (this.selectedBoard === '' || this.selectedStack === '') {
|
||||||
return false
|
return false
|
||||||
|
|||||||
@@ -48,6 +48,13 @@
|
|||||||
|
|
||||||
<div class="dashboard-column">
|
<div class="dashboard-column">
|
||||||
<h2>this week</h2>
|
<h2>this week</h2>
|
||||||
|
<div v-for="card in withDueDashboardGroup.later" :key="card.id">
|
||||||
|
<CardItem :item="card" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="dashboard-column">
|
||||||
|
<h2>later</h2>
|
||||||
<div v-for="card in withDueDashboardGroup.thisWeek" :key="card.id">
|
<div v-for="card in withDueDashboardGroup.thisWeek" :key="card.id">
|
||||||
<CardItem :item="card" />
|
<CardItem :item="card" />
|
||||||
</div>
|
</div>
|
||||||
@@ -55,6 +62,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="filter=='assigned'" class="dashboard">
|
<div v-if="filter=='assigned'" class="dashboard">
|
||||||
|
<div class="dashboard-column">
|
||||||
|
<h2>no due</h2>
|
||||||
|
<div v-for="card in withDueDashboardGroup.noDue" :key="card.id">
|
||||||
|
<CardItem :item="card" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="dashboard-column">
|
<div class="dashboard-column">
|
||||||
<h2>overdue</h2>
|
<h2>overdue</h2>
|
||||||
<div v-for="card in assignedCardsDashboardGroup.overdue" :key="card.id">
|
<div v-for="card in assignedCardsDashboardGroup.overdue" :key="card.id">
|
||||||
@@ -82,6 +96,13 @@
|
|||||||
<CardItem :item="card" />
|
<CardItem :item="card" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="dashboard-column">
|
||||||
|
<h2>this week</h2>
|
||||||
|
<div v-for="card in withDueDashboardGroup.later" :key="card.id">
|
||||||
|
<CardItem :item="card" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -123,24 +144,34 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
groupByDue(dataset) {
|
groupByDue(dataset) {
|
||||||
const all = {
|
const all = {
|
||||||
|
nodue: [],
|
||||||
overdue: [],
|
overdue: [],
|
||||||
today: [],
|
today: [],
|
||||||
tomorrow: [],
|
tomorrow: [],
|
||||||
thisWeek: [],
|
thisWeek: [],
|
||||||
|
later: [],
|
||||||
}
|
}
|
||||||
dataset.forEach(card => {
|
dataset.forEach(card => {
|
||||||
|
|
||||||
|
if (card.duedate === null) {
|
||||||
|
all.nodue.push(card)
|
||||||
|
} else {
|
||||||
const days = Math.floor(moment(card.duedate).diff(this.$root.time, 'seconds') / 60 / 60 / 24)
|
const days = Math.floor(moment(card.duedate).diff(this.$root.time, 'seconds') / 60 / 60 / 24)
|
||||||
if (days < 0) {
|
if (days < 0) {
|
||||||
all.overdue.push(card)
|
all.overdue.push(card)
|
||||||
}
|
}
|
||||||
if (days === 0) {
|
if (days === 0) {
|
||||||
all.thisWeek.push(card)
|
all.today.push(card)
|
||||||
}
|
}
|
||||||
if (days === 1) {
|
if (days === 1) {
|
||||||
all.tomorrow.push(card)
|
all.tomorrow.push(card)
|
||||||
}
|
}
|
||||||
if (days === 2) {
|
if (days > 1 && days < 8) {
|
||||||
all.today.push(card)
|
all.thisWeek.push(card)
|
||||||
|
}
|
||||||
|
if (days > 8) {
|
||||||
|
all.later.push(card)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import axios from '@nextcloud/axios'
|
import axios from '@nextcloud/axios'
|
||||||
import { generateOcsUrl, generateRemoteUrl } from '@nextcloud/router'
|
import { generateOcsUrl } from '@nextcloud/router'
|
||||||
|
|
||||||
export class DashboardApi {
|
export class DashboardApi {
|
||||||
|
|
||||||
@@ -30,11 +30,11 @@ export class DashboardApi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
findAllWithDue(data) {
|
findAllWithDue(data) {
|
||||||
return axios.get(this.url(`dashboard/dashboard/due`), {
|
return axios.get(this.url(`dashboard/due`), {
|
||||||
headers: { 'OCS-APIRequest': 'true' },
|
headers: { 'OCS-APIRequest': 'true' },
|
||||||
})
|
})
|
||||||
.then(
|
.then(
|
||||||
(response) => Promise.resolve(response.data),
|
(response) => Promise.resolve(response.data.ocs.data),
|
||||||
(err) => Promise.reject(err)
|
(err) => Promise.reject(err)
|
||||||
)
|
)
|
||||||
.catch((err) => Promise.reject(err)
|
.catch((err) => Promise.reject(err)
|
||||||
@@ -46,7 +46,7 @@ export class DashboardApi {
|
|||||||
headers: { 'OCS-APIRequest': 'true' },
|
headers: { 'OCS-APIRequest': 'true' },
|
||||||
})
|
})
|
||||||
.then(
|
.then(
|
||||||
(response) => Promise.resolve(response.data),
|
(response) => Promise.resolve(response.data.ocs.data),
|
||||||
(err) => Promise.reject(err)
|
(err) => Promise.reject(err)
|
||||||
)
|
)
|
||||||
.catch((err) => Promise.reject(err)
|
.catch((err) => Promise.reject(err)
|
||||||
|
|||||||
Reference in New Issue
Block a user