Add option to (un)archive a list

This commit is contained in:
kolaente 2021-01-28 22:22:38 +01:00
parent 6cff4d3637
commit 4cae01aab9
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
5 changed files with 91 additions and 13 deletions

View File

@ -18,6 +18,13 @@
Delete this filter Delete this filter
</router-link> </router-link>
</template> </template>
<template v-if="list.isArchived">
<router-link
:to="{ name: `${listRoutePrefix}.settings.archive`, params: { listId: list.id } }"
class="dropdown-item">
Un-Archive this list
</router-link>
</template>
<template v-else> <template v-else>
<router-link <router-link
:to="{ name: `${listRoutePrefix}.settings.edit`, params: { listId: list.id } }" :to="{ name: `${listRoutePrefix}.settings.edit`, params: { listId: list.id } }"
@ -40,6 +47,11 @@
class="dropdown-item"> class="dropdown-item">
Duplicate this list Duplicate this list
</router-link> </router-link>
<router-link
:to="{ name: `${listRoutePrefix}.settings.archive`, params: { listId: list.id } }"
class="dropdown-item">
Archive this list
</router-link>
<router-link <router-link
:to="{ name: `${listRoutePrefix}.settings.delete`, params: { listId: list.id } }" :to="{ name: `${listRoutePrefix}.settings.delete`, params: { listId: list.id } }"
class="dropdown-item"> class="dropdown-item">

View File

@ -35,6 +35,7 @@ import ListSettingBackground from '@/views/list/settings/background'
import ListSettingDuplicate from '@/views/list/settings/duplicate' import ListSettingDuplicate from '@/views/list/settings/duplicate'
import ListSettingShare from '@/views/list/settings/share' import ListSettingShare from '@/views/list/settings/share'
import ListSettingDelete from '@/views/list/settings/delete' import ListSettingDelete from '@/views/list/settings/delete'
import ListSettingArchive from '@/views/list/settings/archive'
import FilterSettingEdit from '@/views/filters/settings/edit' import FilterSettingEdit from '@/views/filters/settings/edit'
import FilterSettingDelete from '@/views/filters/settings/delete' import FilterSettingDelete from '@/views/filters/settings/delete'
// Saved Filters // Saved Filters
@ -212,6 +213,11 @@ export default new Router({
name: 'list.settings.delete', name: 'list.settings.delete',
component: ListSettingDelete, component: ListSettingDelete,
}, },
{
path: '/lists/:listId/settings/archive',
name: 'list.settings.archive',
component: ListSettingArchive,
},
{ {
path: '/lists/:listId/settings/edit', path: '/lists/:listId/settings/edit',
name: 'filter.settings.edit', name: 'filter.settings.edit',
@ -262,6 +268,11 @@ export default new Router({
name: 'list.list.settings.delete', name: 'list.list.settings.delete',
component: ListSettingDelete, component: ListSettingDelete,
}, },
{
path: '/lists/:listId/settings/archive',
name: 'list.list.settings.archive',
component: ListSettingArchive,
},
{ {
path: '/lists/:listId/settings/edit', path: '/lists/:listId/settings/edit',
name: 'filter.list.settings.edit', name: 'filter.list.settings.edit',
@ -309,6 +320,11 @@ export default new Router({
name: 'list.gantt.settings.delete', name: 'list.gantt.settings.delete',
component: ListSettingDelete, component: ListSettingDelete,
}, },
{
path: '/lists/:listId/settings/archive',
name: 'list.gantt.settings.archive',
component: ListSettingArchive,
},
{ {
path: '/lists/:listId/settings/edit', path: '/lists/:listId/settings/edit',
name: 'filter.gantt.settings.edit', name: 'filter.gantt.settings.edit',
@ -351,6 +367,11 @@ export default new Router({
name: 'list.table.settings.delete', name: 'list.table.settings.delete',
component: ListSettingDelete, component: ListSettingDelete,
}, },
{
path: '/lists/:listId/settings/archive',
name: 'list.table.settings.archive',
component: ListSettingArchive,
},
{ {
path: '/lists/:listId/settings/edit', path: '/lists/:listId/settings/edit',
name: 'filter.table.settings.edit', name: 'filter.table.settings.edit',
@ -398,6 +419,11 @@ export default new Router({
name: 'list.kanban.settings.delete', name: 'list.kanban.settings.delete',
component: ListSettingDelete, component: ListSettingDelete,
}, },
{
path: '/lists/:listId/settings/archive',
name: 'list.kanban.settings.archive',
component: ListSettingArchive,
},
{ {
path: '/lists/:listId/settings/edit', path: '/lists/:listId/settings/edit',
name: 'filter.kanban.settings.edit', name: 'filter.kanban.settings.edit',

View File

@ -27,7 +27,7 @@
</router-link> </router-link>
</div> </div>
</div> </div>
<div class="notification is-warning" v-if="list.isArchived"> <div class="notification is-warning" v-if="currentList.isArchived">
This list is archived. This list is archived.
It is not possible to create new or edit tasks or it. It is not possible to create new or edit tasks or it.
</div> </div>
@ -75,6 +75,7 @@ export default {
return typeof this.$store.state.currentList === 'undefined' ? { return typeof this.$store.state.currentList === 'undefined' ? {
id: 0, id: 0,
title: '', title: '',
isArchived: false,
} : this.$store.state.currentList } : this.$store.state.currentList
}, },
}, },

View File

@ -0,0 +1,51 @@
<template>
<modal
@close="$router.back()"
@submit="archiveList()"
>
<span slot="header">{{ list.isArchived ? 'Un-' : '' }}Archive this list</span>
<p slot="text" v-if="list.isArchived">
You will be able to create new tasks or edit it.
</p>
<p slot="text" v-else>
You won't be able to edit this list or create new tasks until you un-archive it.
</p>
</modal>
</template>
<script>
import ListService from '@/services/list'
export default {
name: 'delete',
data() {
return {
listService: ListService,
list: null,
}
},
created() {
this.listService = new ListService()
this.list = this.$store.getters['lists/getListById'](this.$route.params.listId)
},
methods: {
archiveList() {
this.list.isArchived = !this.list.isArchived
this.listService.update(this.list)
.then(r => {
this.$store.commit('currentList', r)
this.$store.commit('namespaces/setListInNamespaceById', r)
this.success({message: 'The list was successfully archived.'}, this)
})
.catch(e => {
this.error(e, this)
})
.finally(() => {
this.$router.back()
})
},
},
}
</script>

View File

@ -55,16 +55,6 @@
/> />
</div> </div>
</div> </div>
<div class="field">
<label class="label" for="isArchivedCheck">Is Archived</label>
<div class="control">
<fancycheckbox
v-model="list.isArchived"
v-tooltip="'If a list is archived, you cannot create new tasks or edit the list or existing tasks.'">
This list is archived
</fancycheckbox>
</div>
</div>
<div class="field"> <div class="field">
<label class="label">Color</label> <label class="label">Color</label>
<div class="control"> <div class="control">
@ -79,7 +69,6 @@
import ListModel from '@/models/list' import ListModel from '@/models/list'
import ListService from '@/services/list' import ListService from '@/services/list'
import ColorPicker from '@/components/input/colorPicker' import ColorPicker from '@/components/input/colorPicker'
import Fancycheckbox from '@/components/input/fancycheckbox'
import LoadingComponent from '@/components/misc/loading' import LoadingComponent from '@/components/misc/loading'
import ErrorComponent from '@/components/misc/error' import ErrorComponent from '@/components/misc/error'
import ListDuplicateService from '@/services/listDuplicateService' import ListDuplicateService from '@/services/listDuplicateService'
@ -97,7 +86,6 @@ export default {
components: { components: {
CreateEdit, CreateEdit,
ColorPicker, ColorPicker,
Fancycheckbox,
editor: () => ({ editor: () => ({
component: import(/* webpackChunkName: "editor" */ '@/components/input/editor'), component: import(/* webpackChunkName: "editor" */ '@/components/input/editor'),
loading: LoadingComponent, loading: LoadingComponent,