Verwalten Sie Kodierer und Kodierjobs für die manuelle Kodierung von Antworten.
Kodierer
@@ -25,7 +35,11 @@ Kodierer
Kodierjobs
-
+
+
+
+
Variablenbündel
+
diff --git a/apps/frontend/src/app/coding/components/coding-management-manual/coding-management-manual.component.scss b/apps/frontend/src/app/coding/components/coding-management-manual/coding-management-manual.component.scss
index 80c25f552..6479b3c33 100755
--- a/apps/frontend/src/app/coding/components/coding-management-manual/coding-management-manual.component.scss
+++ b/apps/frontend/src/app/coding/components/coding-management-manual/coding-management-manual.component.scss
@@ -93,13 +93,43 @@
border-top: 1px solid rgba(0, 0, 0, 0.1);
}
+ // Coder selection styles
+ .coder-selection-container {
+ margin-bottom: 20px;
+
+ .coder-select {
+ width: 100%;
+ max-width: 400px;
+ }
+
+ ::ng-deep .mat-mdc-form-field {
+ width: 100%;
+ max-width: 400px;
+
+ .mat-mdc-select-value {
+ font-size: 14px;
+ }
+
+ .mat-mdc-form-field-infix {
+ width: auto;
+ min-width: 200px;
+ }
+ }
+ }
+
.statistics-content {
margin: 20px 0;
- .coder-list-container, .coding-jobs-container {
+ .coder-list-container, .coding-jobs-container, .variable-bundle-groups-container {
margin-bottom: 20px;
}
+ .variable-bundle-groups-container {
+ margin-top: 30px;
+ padding-top: 20px;
+ border-top: 1px solid rgba(0, 0, 0, 0.1);
+ }
+
h3 {
font-size: 18px;
font-weight: 500;
diff --git a/apps/frontend/src/app/coding/components/coding-management-manual/coding-management-manual.component.ts b/apps/frontend/src/app/coding/components/coding-management-manual/coding-management-manual.component.ts
index 558f24256..c1f263029 100755
--- a/apps/frontend/src/app/coding/components/coding-management-manual/coding-management-manual.component.ts
+++ b/apps/frontend/src/app/coding/components/coding-management-manual/coding-management-manual.component.ts
@@ -1,18 +1,58 @@
-import { Component } from '@angular/core';
+import { Component, OnInit, inject } from '@angular/core';
+import { NgFor } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { MatAnchor, MatButton } from '@angular/material/button';
-import {
- MatCard, MatCardContent, MatCardHeader, MatCardTitle
-} from '@angular/material/card';
import { MatIcon } from '@angular/material/icon';
+import { MatFormField, MatLabel } from '@angular/material/form-field';
+import { MatSelect, MatOption, MatSelectChange } from '@angular/material/select';
import { CoderListComponent } from '../coder-list/coder-list.component';
import { CodingJobsComponent } from '../coding-jobs/coding-jobs.component';
+import { VariableBundleManagerComponent } from '../variable-bundle-manager/variable-bundle-manager.component';
+import { CoderService } from '../../services/coder.service';
+import { Coder } from '../../models/coder.model';
@Component({
selector: 'coding-box-coding-management-manual',
templateUrl: './coding-management-manual.component.html',
styleUrls: ['./coding-management-manual.component.scss'],
- imports: [TranslateModule, CoderListComponent, MatAnchor, CodingJobsComponent, MatCardContent, MatCardTitle, MatCardHeader, MatCard, MatIcon, MatButton]
+ imports: [
+ NgFor,
+ TranslateModule,
+ CoderListComponent,
+ MatAnchor,
+ CodingJobsComponent,
+ MatIcon,
+ MatButton,
+ MatFormField,
+ MatLabel,
+ MatSelect,
+ MatOption,
+ VariableBundleManagerComponent
+ ]
})
-export class CodingManagementManualComponent {
+export class CodingManagementManualComponent implements OnInit {
+ private coderService = inject(CoderService);
+
+ coders: Coder[] = [];
+ selectedCoder: Coder | null = null;
+
+ ngOnInit(): void {
+ this.loadCoders();
+ }
+
+ loadCoders(): void {
+ this.coderService.getCoders().subscribe({
+ next: coders => {
+ this.coders = coders;
+ },
+ error: error => {
+ console.error('Error loading coders:', error);
+ }
+ });
+ }
+
+ onCoderSelected(event: MatSelectChange): void {
+ const coderId = event.value;
+ this.selectedCoder = this.coders.find(coder => coder.id === coderId) || null;
+ }
}
diff --git a/apps/frontend/src/app/coding/components/my-coding-jobs/my-coding-jobs.component.ts b/apps/frontend/src/app/coding/components/my-coding-jobs/my-coding-jobs.component.ts
index 6e2513897..9f857539a 100644
--- a/apps/frontend/src/app/coding/components/my-coding-jobs/my-coding-jobs.component.ts
+++ b/apps/frontend/src/app/coding/components/my-coding-jobs/my-coding-jobs.component.ts
@@ -24,6 +24,7 @@ import { BackendService } from '../../../services/backend.service';
import { SearchFilterComponent } from '../../../shared/search-filter/search-filter.component';
import { CodingJob } from '../../models/coding-job.model';
import { WorkspaceUserDto } from '../../../../../../../api-dto/workspaces/workspace-user-dto';
+import { CoderService } from '../../services/coder.service';
@Component({
selector: 'coding-box-my-coding-jobs',
@@ -57,6 +58,7 @@ export class MyCodingJobsComponent implements OnInit, AfterViewInit {
backendService = inject(BackendService);
private snackBar = inject(MatSnackBar);
private router = inject(Router);
+ private coderService = inject(CoderService);
displayedColumns: string[] = ['name', 'description', 'status', 'createdAt', 'updatedAt'];
dataSource = new MatTableDataSource