-
{{ task.category }}
+
{{ CATEGORY_LABELS[task.category] | translate }}
diff --git a/src/app/components/board/task/task.component.ts b/src/app/components/board/task/task.component.ts
index e904c14..26275a2 100644
--- a/src/app/components/board/task/task.component.ts
+++ b/src/app/components/board/task/task.component.ts
@@ -17,11 +17,16 @@ import { Router } from '@angular/router';
import { TaskMenuComponent } from './task-menu/task-menu.component';
import { ResizeService } from '../../../services/resize.service';
import { take } from 'rxjs';
+import {
+ CATEGORY_COLORS,
+ CATEGORY_LABELS,
+} from '../../../constants/task-category.constants';
+import { TranslateModule } from '@ngx-translate/core';
@Component({
selector: 'app-task',
standalone: true,
- imports: [CommonModule, TaskMenuComponent],
+ imports: [CommonModule, TranslateModule, TaskMenuComponent],
templateUrl: './task.component.html',
styleUrl: './task.component.scss',
})
@@ -29,6 +34,8 @@ export class TaskComponent {
@Input() task!: Task;
@Output() updateStatusEmitter = new EventEmitter
();
+ readonly CATEGORY_LABELS = CATEGORY_LABELS;
+ readonly categoryColors = CATEGORY_COLORS;
readonly DISABLE_DRAG_BREAKPOINT = 667;
readonly DIALOG_OFFSET_X = 25;
readonly DIALOG_OFFSET_Y = 10;
@@ -36,10 +43,6 @@ export class TaskComponent {
pageViewMedia$ = this.resizeService.pageViewMedia$;
assignees: Assignee[] = [];
- categoryColors = new Map([
- ['User Story', '#0038ff'],
- ['Technical Task', '#20d7c2'],
- ]);
mobileMenuOpen = false;
disableDrag = false;
diff --git a/src/app/constants/task-category.constants.ts b/src/app/constants/task-category.constants.ts
new file mode 100644
index 0000000..99a1b48
--- /dev/null
+++ b/src/app/constants/task-category.constants.ts
@@ -0,0 +1,16 @@
+import { TaskCategory } from '../interfaces/task.interface';
+
+export const CATEGORIES: TaskCategory[] = [
+ TaskCategory.USER_STORY,
+ TaskCategory.TECHNICAL_TASK,
+];
+
+export const CATEGORY_LABELS: Record = {
+ [TaskCategory.USER_STORY]: 'taskCategory.userStory',
+ [TaskCategory.TECHNICAL_TASK]: 'taskCategory.technicalTask',
+};
+
+export const CATEGORY_COLORS: Record = {
+ [TaskCategory.USER_STORY]: '#0038ff',
+ [TaskCategory.TECHNICAL_TASK]: '#20d7c2',
+};
diff --git a/src/app/shared/components/overlay/task-overlay/task-overlay.component.html b/src/app/shared/components/overlay/task-overlay/task-overlay.component.html
index 8bb8f36..b9e049d 100644
--- a/src/app/shared/components/overlay/task-overlay/task-overlay.component.html
+++ b/src/app/shared/components/overlay/task-overlay/task-overlay.component.html
@@ -8,9 +8,9 @@
{{ "addTask.priority" | translate }}:
- {{ capitalizeFirstLetter(task.priority) }}
+ {{ PRIORITY_LABELS[task.priority] | translate }}
diff --git a/src/app/shared/components/overlay/task-overlay/task-overlay.component.ts b/src/app/shared/components/overlay/task-overlay/task-overlay.component.ts
index b406d88..1a52be8 100644
--- a/src/app/shared/components/overlay/task-overlay/task-overlay.component.ts
+++ b/src/app/shared/components/overlay/task-overlay/task-overlay.component.ts
@@ -19,6 +19,11 @@ import { map, Subject, takeUntil } from 'rxjs';
import { ApiService } from '../../../../services/api.service';
import { UpdateNotifierService } from '../../../../services/update-notifier.service';
import { ToastNotificationService } from '../../../../services/toast-notification.service';
+import {
+ CATEGORY_COLORS,
+ CATEGORY_LABELS,
+} from '../../../../constants/task-category.constants';
+import { PRIORITY_LABELS } from '../../../../constants/task-priority.constants';
@Component({
selector: 'app-task-overlay',
@@ -31,6 +36,10 @@ export class TaskOverlayComponent implements OnInit, OnDestroy {
@Input() overlayData: string = '';
@Output() closeDialogEmitter = new EventEmitter();
+ readonly CATEGORY_LABELS = CATEGORY_LABELS;
+ readonly PRIORITY_LABELS = PRIORITY_LABELS;
+ readonly categoryColors = CATEGORY_COLORS;
+
task: Task | null = null;
overlayMobile: boolean = false;
currentUserId: string = '';
@@ -49,11 +58,6 @@ export class TaskOverlayComponent implements OnInit, OnDestroy {
private route: ActivatedRoute
) {}
- categoryColors = new Map([
- ['User Story', '#0038ff'],
- ['Technical Task', '#20d7c2'],
- ]);
-
ngOnInit(): void {
this.setCurrentUserId();
this.setOverlayDataFromRoute();
@@ -175,16 +179,9 @@ export class TaskOverlayComponent implements OnInit, OnDestroy {
);
}
- /**
- * Capitalizes the first letter of a given string.
- *
- * This function takes a string as an argument and returns a new string
- * with the first letter capitalized.
- * @param data The string to capitalize.
- * @returns {string} A new string with the first letter capitalized.
- */
- capitalizeFirstLetter(data: string) {
- return data.charAt(0).toUpperCase() + data.slice(1);
+ capitalizeFirstLetter(value: string): string {
+ if (!value) return '';
+ return value.charAt(0).toUpperCase() + value.slice(1);
}
toggleConfirmDialog() {
diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json
index 2eb48d4..8f95678 100644
--- a/src/assets/i18n/de.json
+++ b/src/assets/i18n/de.json
@@ -134,6 +134,10 @@
"medium": "Mittel",
"urgent": "Dringend"
},
+ "taskCategory": {
+ "userStory": "Benutzergeschichte",
+ "technicalTask": "Technischer Auftrag"
+ },
"addTask": {
"headline": "Aufgabe",
"title": "Titel",
diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json
index 704f3b6..7dc89da 100644
--- a/src/assets/i18n/en.json
+++ b/src/assets/i18n/en.json
@@ -134,6 +134,10 @@
"medium": "Medium",
"low": "Low"
},
+ "taskCategory": {
+ "userStory": "User Story",
+ "technicalTask": "Technical Task"
+ },
"addTask": {
"headline": "Add Task",
"title": "Title",