Skip to content

Commit f775d45

Browse files
committed
wip: Update kanban activity #156
1 parent b7f3ff8 commit f775d45

File tree

5 files changed

+109
-112
lines changed

5 files changed

+109
-112
lines changed

config/default.js

+18-16
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ const LeftPane = {
3434
{ id: 'document', icon: 'las la-icons', label: 'DocumentActivity.LABEL', renderer: 'item', route: { name: 'document-activity', params: { type: 'html' } } },
3535
{ id: 'messages', icon: 'las la-comments', label: 'MessagesActivity.LABEL', renderer: 'item', route: { name: 'messages-activity' } },
3636
{ id: 'collection', icon: 'las la-list', label: 'CollectionActivity.LABEL', renderer: 'item', route: { name: 'collection-activity', params: { page: 'list' } } },
37-
{ id: 'kanban', icon: 'dashboard', label: 'KanbanActivity.LABEL', renderer: 'item', route: { name: 'kanban-activity' } },
37+
{ id: 'board', icon: 'dashboard', label: 'KanbanActivity.LABEL', renderer: 'item', route: { name: 'board-activity' } },
3838
{ id: 'chart', icon: 'las la-chart-pie', label: 'ChartActivity.LABEL', renderer: 'item', route: { name: 'chart-activity' } },
3939
{ id: 'editor', icon: 'las la-edit', label: 'EditorActivity.LABEL', renderer: 'item', route: { name: 'editor-activity' } },
4040
{ id: 'webpush', icon: 'las la-bell', label: 'WebPushActivity.LABEL', renderer: 'item', route: { name: 'webpush-activity' } },
@@ -476,21 +476,23 @@ module.exports = {
476476
]
477477
}
478478
},
479-
kanbanActivity: {
480-
leftPane: LeftPane,
481-
topPane: {
482-
content: {
483-
default: [
484-
{ id: 'table', icon: 'dashboard', label: 'KanbanActivity.LABEL', color: 'primary', disabled: true },
485-
{ id: 'filter', icon: 'las la-search', tooltip: 'KanbanActivity.FILTER', handler: { name: 'setTopPaneMode', params: ['filter'] } }
486-
],
487-
filter: [
488-
{ id: 'back', icon: 'las la-arrow-left', handler: { name: 'setTopPaneMode', params: ['default'] } },
489-
{ component: 'QSeparator', vertical: true, color: 'lightgrey' },
490-
{ component: 'collection/KFilter', size: '1rem' }
491-
]
492-
},
493-
mode: 'default'
479+
boardActivity: {
480+
panes: {
481+
left: LeftPane,
482+
top: {
483+
content: {
484+
default: [
485+
{ id: 'table', icon: 'dashboard', label: 'KanbanActivity.LABEL', color: 'primary', disabled: true },
486+
{ id: 'filter', icon: 'las la-search', tooltip: 'KanbanActivity.FILTER', handler: { name: 'setTopPaneMode', params: ['filter'] } }
487+
],
488+
filter: [
489+
{ id: 'back', icon: 'las la-arrow-left', handler: { name: 'setTopPaneMode', params: ['default'] } },
490+
{ component: 'QSeparator', vertical: true, color: 'lightgrey' },
491+
{ component: 'collection/KFilter', size: '1rem' }
492+
]
493+
},
494+
mode: 'default'
495+
}
494496
},
495497
categories: [
496498
{ name: 'sain' },

src/boot/kdk.js

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export default async ({ app }) => {
3939
app.component('KStamp', await kdkCoreUtils.loadComponent('KStamp'))
4040
app.component('KModal', await kdkCoreUtils.loadComponent('KModal'))
4141
app.component('KDialog', await kdkCoreUtils.loadComponent('KDialog'))
42+
app.component('KBoard', await kdkCoreUtils.loadComponent('collection/KBoard'))
4243
app.component('KDate', await kdkCoreUtils.loadComponent('time/KDate'))
4344
app.component('KTime', await kdkCoreUtils.loadComponent('time/KTime'))
4445
app.component('KDateTime', await kdkCoreUtils.loadComponent('time/KDateTime'))

src/components/KanbanActivity.vue

-93
This file was deleted.
+87
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
<template>
2+
<KActivity
3+
:ref="activityCreated"
4+
name="board"
5+
padding
6+
>
7+
<KBoard
8+
v-if="categories"
9+
:columns="columns"
10+
class="q-pt-sm"
11+
/>
12+
<!-- Enable modal -->
13+
<router-view service="documents" />
14+
</KActivity>
15+
</template>
16+
17+
<script setup>
18+
import _ from 'lodash'
19+
import { ref, computed } from 'vue'
20+
import { useQuasar } from 'quasar'
21+
22+
// Data
23+
const $q = useQuasar()
24+
const categories = ref(null)
25+
const categoryField = ref(null)
26+
27+
// Computed
28+
const columnWidth = computed(() => {
29+
if ($q.screen.lt.md) return 280
30+
if ($q.screen.lt.lg) return 360
31+
if ($q.screen.lt.xl) return 440
32+
return 500
33+
})
34+
const renderer = computed(() => {
35+
return {
36+
component: 'collection/KCard',
37+
class: 'q-py-xs col-12',
38+
style: { minWidth: columnWidth.value + 'px', maxWidth: columnWidth.value + 'px' },
39+
actions: [
40+
{
41+
id: 'view-document',
42+
icon: 'las la-glasses',
43+
tooltip: 'KanbanActivity.VIEW_DOCUMENT',
44+
handler: (context) => this.$router.push({ name: 'view-document', params: { page: 'list', objectId: context.item._id } })
45+
}
46+
]
47+
}
48+
})
49+
const columns = computed(() => {
50+
return [{
51+
label: 'Sain',
52+
value: 'todo',
53+
props: {
54+
service: 'documents',
55+
renderer: _.cloneDeep(renderer.value),
56+
baseQuery: Object.assign({ etat_sani: 'sain' })
57+
}
58+
}, {
59+
label: 'Malade',
60+
value: 'doing',
61+
props: {
62+
service: 'documents',
63+
renderer: _.cloneDeep(renderer.value),
64+
baseQuery: Object.assign({ etat_sani: 'malade' })
65+
}
66+
}, {
67+
label: 'Declin',
68+
value: 'done',
69+
props: {
70+
service: 'documents',
71+
renderer: _.cloneDeep(renderer.value),
72+
baseQuery: Object.assign({ etat_sani: 'declin' })
73+
}
74+
}]
75+
})
76+
77+
// Functions
78+
function activityCreated (ref) {
79+
if (ref) {
80+
const options = ref.getOptions()
81+
categoryField.value = _.get(options, 'categoryField')
82+
categories.value = _.get(options, 'categories')
83+
}
84+
}
85+
</script>
86+
87+

src/router/routes.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,9 @@ module.exports = [{
7979
}
8080
}
8181
},
82-
kanban: {
83-
name: 'kanban-activity',
84-
component: 'KanbanActivity'
82+
board: {
83+
name: 'board-activity',
84+
component: 'board/BoardActivity'
8585
},
8686
chart: {
8787
name: 'chart-activity',

0 commit comments

Comments
 (0)