diff --git a/frontend/components/project/ProjectDrawer.vue b/frontend/components/project/ProjectDrawer.vue
index f8ba6fb..db3d837 100644
--- a/frontend/components/project/ProjectDrawer.vue
+++ b/frontend/components/project/ProjectDrawer.vue
@@ -87,10 +87,35 @@
+
+
+
+
{{ $t('workflows.title') }}
+
{{ props.project.workflow?.name }}
+
+
+
+
+
+
+
@@ -122,6 +147,15 @@ const isOpen = computed({
const isEditing = computed(() => !!props.project)
const isSubmitting = ref(false)
const confirmDeleteOpen = ref(false)
+const switchModalOpen = ref(false)
+
+const auth = useAuthStore()
+const canManageWorkflows = computed(() => auth.user?.roles?.includes('ROLE_ADMIN') ?? false)
+
+function onWorkflowSwitched() {
+ emit('saved')
+ isOpen.value = false
+}
const { listRepositories } = useGiteaService()
const giteaRepos = ref([])
diff --git a/frontend/components/project/ProjectWorkflowSwitchModal.vue b/frontend/components/project/ProjectWorkflowSwitchModal.vue
new file mode 100644
index 0000000..0fee759
--- /dev/null
+++ b/frontend/components/project/ProjectWorkflowSwitchModal.vue
@@ -0,0 +1,209 @@
+
+
+
+
+
+
+
{{ $t('workflows.switchTitle') }}
+
+
+
+
+
+
{{ $t('workflows.switchMappingTitle') }}
+
+
+
+
+ | {{ $t('workflows.switchSourceCol') }} |
+ {{ $t('workflows.switchTargetCol') }} |
+ {{ $t('workflows.switchTaskCountCol') }} |
+
+
+
+
+ |
+
+ {{ row.source?.label ?? $t('myTasks.backlog') }}
+
+ ({{ row.source?.category ? $t(`workflows.categories.${row.source.category}`) : '—' }})
+
+ |
+
+
+ |
+ {{ row.count }} |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+