diff --git a/docs/API.md b/docs/API.md
index c3d40d265d..ed67000632 100644
--- a/docs/API.md
+++ b/docs/API.md
@@ -1128,6 +1128,7 @@ Deck stores user and app configuration values globally and per board. The GET en
| --- | --- |
| calendar | Determines if the calendar/tasks integration through the CalDAV backend is enabled for the user (boolean) |
| cardDetailsInModal | Determines if the bigger view is used (boolean) |
+| hideNoDueOnOverview | Determines if the No Due Date column should be displayed |
| cardIdBadge | Determines if the ID badges are displayed on cards (boolean) |
| groupLimit | Determines if creating new boards is limited to certain groups of the instance. The resulting output is an array of group objects with the id and the displayname (Admin only)|
@@ -1173,6 +1174,7 @@ Deck stores user and app configuration values globally and per board. The GET en
| notify-due | `off`, `assigned` or `all` |
| calendar | Boolean |
| cardDetailsInModal | Boolean |
+| hideNoDueOnOverview | Boolean |
| cardIdBadge | Boolean |
#### Example request
diff --git a/lib/Service/ConfigService.php b/lib/Service/ConfigService.php
index b4afb8fc45..e870a290b0 100644
--- a/lib/Service/ConfigService.php
+++ b/lib/Service/ConfigService.php
@@ -52,7 +52,8 @@ public function getAll(): array {
$data = [
'calendar' => $this->isCalendarEnabled(),
'cardDetailsInModal' => $this->isCardDetailsInModal(),
- 'cardIdBadge' => $this->isCardIdBadgeEnabled()
+ 'cardIdBadge' => $this->isCardIdBadgeEnabled(),
+ 'hideNoDueOnOverview' => $this->isHideNoDueOnOverviewEnabled()
];
if ($this->groupManager->isAdmin($userId)) {
$data['groupLimit'] = $this->get('groupLimit');
@@ -85,6 +86,11 @@ public function get(string $key) {
return false;
}
return (bool)$this->config->getUserValue($this->getUserId(), Application::APP_ID, 'cardDetailsInModal', true);
+ case 'hideNoDueOnOverview':
+ if ($this->getUserId() === null) {
+ return false;
+ }
+ return (bool)$this->config->getUserValue($this->getUserId(), Application::APP_ID, 'hideNoDueOnOverview', true);
case 'cardIdBadge':
if ($this->getUserId() === null) {
return false;
@@ -123,6 +129,20 @@ public function isCardDetailsInModal(?int $boardId = null): bool {
return (bool)$this->config->getUserValue($userId, Application::APP_ID, 'board:' . $boardId . ':cardDetailsInModal', $defaultState);
}
+ public function isHideNoDueOnOverviewEnabled(?int $boardId = null): bool {
+ $userId = $this->getUserId();
+ if ($userId === null) {
+ return false;
+ }
+
+ $defaultState = (bool)$this->config->getUserValue($userId, Application::APP_ID, 'hideNoDueOnOverview', false);
+ if ($boardId === null) {
+ return $defaultState;
+ }
+
+ return (bool)$this->config->getUserValue($userId, Application::APP_ID, 'board:' . $boardId . ':hideNoDueOnOverview', $defaultState);
+ }
+
public function isCardIdBadgeEnabled(): bool {
$userId = $this->getUserId();
if ($userId === null) {
@@ -177,6 +197,10 @@ public function set($key, $value) {
$this->config->setUserValue($userId, Application::APP_ID, 'cardDetailsInModal', (string)$value);
$result = $value;
break;
+ case 'hideNoDueOnOverview':
+ $this->config->setUserValue($userId, Application::APP_ID, 'hideNoDueOnOverview', (string)$value);
+ $result = $value;
+ break;
case 'cardIdBadge':
$this->config->setUserValue($userId, Application::APP_ID, 'cardIdBadge', (string)$value);
$result = $value;
diff --git a/src/App.vue b/src/App.vue
index 881f75ced9..aba4793edd 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -98,6 +98,14 @@ export default {
this.$store.dispatch('setConfig', { cardDetailsInModal: newValue })
},
},
+ hideNoDueOnOverview: {
+ get() {
+ return this.$store.getters.config('hideNoDueOnOverview')
+ },
+ set(newValue) {
+ this.$store.dispatch('setConfig', { hideNoDueOnOverview: newValue })
+ },
+ },
},
created() {
const initialState = loadState('deck', 'initialBoards', null)
diff --git a/src/components/DeckAppSettings.vue b/src/components/DeckAppSettings.vue
index 3935dbff5d..674c23146a 100644
--- a/src/components/DeckAppSettings.vue
+++ b/src/components/DeckAppSettings.vue
@@ -14,6 +14,12 @@
:label="t('deck', 'Use bigger card view')" />
+
+
+
+
+
@@ -119,6 +125,14 @@ export default {
this.$store.dispatch('setConfig', { cardDetailsInModal: newValue })
},
},
+ hideNoDueOnOverview: {
+ get() {
+ return this.$store.getters.config('hideNoDueOnOverview')
+ },
+ set(newValue) {
+ this.$store.dispatch('setConfig', { hideNoDueOnOverview: newValue })
+ },
+ },
cardIdBadge: {
get() {
return this.$store.getters.config('cardIdBadge')
diff --git a/src/components/overview/Overview.vue b/src/components/overview/Overview.vue
index b86e35b13d..311fb10db1 100644
--- a/src/components/overview/Overview.vue
+++ b/src/components/overview/Overview.vue
@@ -74,11 +74,6 @@ const COLUMN_PROPS_LIST = [
title: 'Later',
filter: 'later',
},
- {
- title: 'No due',
- filter: 'nodue',
- sort: false,
- },
]
export default {
@@ -95,9 +90,17 @@ export default {
},
},
data() {
+ const dynamicList = [...COLUMN_PROPS_LIST];
+ if(hideNoDueOnOverview) {
+ dynamicList.push({
+ title: 'No due',
+ filter: 'nodue',
+ sort: false,
+ });
+ }
return {
loading: true,
- columnPropsList: COLUMN_PROPS_LIST,
+ columnPropsList: dynamicList,
}
},
computed: {
@@ -112,6 +115,14 @@ export default {
return ''
}
},
+ hideNoDueOnOverview: {
+ get() {
+ return this.$store.getters.config('hideNoDueOnOverview')
+ },
+ set(newValue) {
+ this.$store.dispatch('setConfig', { hideNoDueOnOverview: newValue })
+ },
+ },
...mapGetters(['assignedCardsDashboard']),
},
watch: {