format entries, do not load on end, loading by click on another card/board
Signed-off-by: Jakob <jakob.roehrl@web.de>
This commit is contained in:
@@ -7,12 +7,12 @@
|
|||||||
<span v-html="parseMessage(entry)" />
|
<span v-html="parseMessage(entry)" />
|
||||||
<span> {{ getTime(entry.datetime) }} </span>
|
<span> {{ getTime(entry.datetime) }} </span>
|
||||||
</div>
|
</div>
|
||||||
<button @click="loadMore">Load More</button>
|
<button v-if="activityLoadMore" @click="loadMore">Load More</button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapGetters } from 'vuex'
|
import { mapState } from 'vuex'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'TimelineTabSidebard',
|
name: 'TimelineTabSidebard',
|
||||||
@@ -36,8 +36,9 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters({
|
...mapState({
|
||||||
boardActivity: 'activity'
|
boardActivity: 'activity',
|
||||||
|
activityLoadMore: 'activityLoadMore'
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
|||||||
@@ -81,10 +81,10 @@
|
|||||||
<div v-if="isLoading" class="icon icon-loading" />
|
<div v-if="isLoading" class="icon icon-loading" />
|
||||||
<div v-for="entry in cardActivity" v-else :key="entry.activity_id">
|
<div v-for="entry in cardActivity" v-else :key="entry.activity_id">
|
||||||
<img :src="entry.icon">
|
<img :src="entry.icon">
|
||||||
{{ entry.subject }}
|
<span v-html="parseMessage(entry)" />
|
||||||
{{ getTime(entry.datetime) }}
|
{{ getTime(entry.datetime) }}
|
||||||
</div>
|
</div>
|
||||||
<button @click="loadMore">Load More</button>
|
<button v-if="activityLoadMore" @click="loadMore">Load More</button>
|
||||||
</AppSidebarTab>
|
</AppSidebarTab>
|
||||||
</app-sidebar>
|
</app-sidebar>
|
||||||
</template>
|
</template>
|
||||||
@@ -142,7 +142,8 @@ export default {
|
|||||||
...mapState({
|
...mapState({
|
||||||
currentBoard: state => state.currentBoard,
|
currentBoard: state => state.currentBoard,
|
||||||
assignableUsers: state => state.assignableUsers,
|
assignableUsers: state => state.assignableUsers,
|
||||||
cardActivity: 'activity'
|
cardActivity: 'activity',
|
||||||
|
activityLoadMore: 'activityLoadMore'
|
||||||
}),
|
}),
|
||||||
currentCard() {
|
currentCard() {
|
||||||
return this.$store.getters.cardById(this.id)
|
return this.$store.getters.cardById(this.id)
|
||||||
@@ -175,8 +176,16 @@ export default {
|
|||||||
handler() {
|
handler() {
|
||||||
this.copiedCard = JSON.parse(JSON.stringify(this.currentCard))
|
this.copiedCard = JSON.parse(JSON.stringify(this.currentCard))
|
||||||
this.allLabels = this.currentCard.labels
|
this.allLabels = this.currentCard.labels
|
||||||
this.assignedUsers = this.currentCard.assignedUsers.map((item) => item.participant)
|
|
||||||
|
if (this.currentCard.assignedUsers.length > 0) {
|
||||||
|
this.assignedUsers = this.currentCard.assignedUsers.map((item) => item.participant)
|
||||||
|
}
|
||||||
|
|
||||||
|
this.desc = this.currentCard.description
|
||||||
this.updateRelativeTimestamps()
|
this.updateRelativeTimestamps()
|
||||||
|
|
||||||
|
this.params.object_id = this.id
|
||||||
|
this.loadCardActivity()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -261,6 +270,15 @@ export default {
|
|||||||
this.params.since = aId
|
this.params.since = aId
|
||||||
this.loadCardActivity()
|
this.loadCardActivity()
|
||||||
},
|
},
|
||||||
|
parseMessage(activity) {
|
||||||
|
let subject = activity.subject_rich[0]
|
||||||
|
let parameters = activity.subject_rich[1]
|
||||||
|
if (parameters.after && typeof parameters.after.id === 'string' && parameters.after.id.startsWith('dt:')) {
|
||||||
|
let dateTime = parameters.after.id.substr(3)
|
||||||
|
parameters.after.name = window.moment(dateTime).format('L LTS')
|
||||||
|
}
|
||||||
|
return OCA.Activity.RichObjectStringParser.parseMessage(subject, parameters)
|
||||||
|
},
|
||||||
clickAddNewAttachmment() {
|
clickAddNewAttachmment() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,8 @@ export default new Vuex.Store({
|
|||||||
sharees: [],
|
sharees: [],
|
||||||
assignableUsers: [],
|
assignableUsers: [],
|
||||||
boardFilter: BOARD_FILTERS.ALL,
|
boardFilter: BOARD_FILTERS.ALL,
|
||||||
activity: []
|
activity: [],
|
||||||
|
activityLoadMore: true
|
||||||
},
|
},
|
||||||
getters: {
|
getters: {
|
||||||
boards: state => {
|
boards: state => {
|
||||||
@@ -64,9 +65,6 @@ export default new Vuex.Store({
|
|||||||
sharees: state => {
|
sharees: state => {
|
||||||
return state.sharees
|
return state.sharees
|
||||||
},
|
},
|
||||||
activity: state => {
|
|
||||||
return state.activity
|
|
||||||
},
|
|
||||||
noneArchivedBoards: state => {
|
noneArchivedBoards: state => {
|
||||||
return state.boards.filter(board => {
|
return state.boards.filter(board => {
|
||||||
return board.archived === false && !board.deletedAt
|
return board.archived === false && !board.deletedAt
|
||||||
@@ -152,6 +150,12 @@ export default new Vuex.Store({
|
|||||||
})
|
})
|
||||||
|
|
||||||
},
|
},
|
||||||
|
clearActivity(state) {
|
||||||
|
state.activity = []
|
||||||
|
},
|
||||||
|
setActivityLoadMore(state, value) {
|
||||||
|
state.activityLoadMore = value
|
||||||
|
},
|
||||||
setAssignableUsers(state, users) {
|
setAssignableUsers(state, users) {
|
||||||
state.assignableUsers = users
|
state.assignableUsers = users
|
||||||
},
|
},
|
||||||
@@ -288,12 +292,20 @@ export default new Vuex.Store({
|
|||||||
params.append('object_type', obj.object_type)
|
params.append('object_type', obj.object_type)
|
||||||
params.append('object_id', obj.object_id)
|
params.append('object_id', obj.object_id)
|
||||||
|
|
||||||
|
if (obj.since === 0) {
|
||||||
|
commit('clearActivity')
|
||||||
|
}
|
||||||
|
|
||||||
let keyword = 'deck'
|
let keyword = 'deck'
|
||||||
if (obj.type === 'filter') {
|
if (obj.type === 'filter') {
|
||||||
keyword = 'filter'
|
keyword = 'filter'
|
||||||
}
|
}
|
||||||
axios.get(OC.linkToOCS('apps/activity/api/v2/activity') + keyword, { params }).then((response) => {
|
axios.get(OC.linkToOCS('apps/activity/api/v2/activity') + keyword, { params }).then((response) => {
|
||||||
commit('setActivity', response.data.ocs.data)
|
commit('setActivity', response.data.ocs.data)
|
||||||
|
commit('setActivityLoadMore', true)
|
||||||
|
if (response.data.ocs.meta.statuscode === 304) {
|
||||||
|
commit('setActivityLoadMore', false)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user