diff --git a/jest.config.js b/jest.config.js index 90a9ae771999..3d30b4370c50 100644 --- a/jest.config.js +++ b/jest.config.js @@ -91,10 +91,10 @@ module.exports = { coverageThreshold: { global: { // TODO: in the future, the following values should increase to at least 90% - statements: 88.86, - branches: 74.47, - functions: 83.07, - lines: 88.88, + statements: 88.72, + branches: 74.4, + functions: 82.87, + lines: 88.76, }, }, coverageReporters: ['clover', 'json', 'lcov', 'text-summary'], diff --git a/src/main/webapp/app/admin/cleanup-service/cleanup-service.component.ts b/src/main/webapp/app/admin/cleanup-service/cleanup-service.component.ts index 5a8d663607e6..3e7c4efef2c5 100644 --- a/src/main/webapp/app/admin/cleanup-service/cleanup-service.component.ts +++ b/src/main/webapp/app/admin/cleanup-service/cleanup-service.component.ts @@ -5,16 +5,16 @@ import { convertDateFromServer } from 'app/utils/date.utils'; import { Subject } from 'rxjs'; import { HttpResponse } from '@angular/common/http'; import { CleanupServiceExecutionRecordDTO, DataCleanupService } from 'app/admin/cleanup-service/data-cleanup.service'; -import { FormDateTimePickerModule } from 'app/shared/date-time-picker/date-time-picker.module'; import { ArtemisSharedModule } from 'app/shared/shared.module'; import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { CleanupOperationModalComponent } from 'app/admin/cleanup-service/cleanup-operation-modal.component'; +import { FormDateTimePickerComponent } from 'app/shared/date-time-picker/date-time-picker.component'; @Component({ selector: 'jhi-cleanup-service', templateUrl: './cleanup-service.component.html', - imports: [FormDateTimePickerModule, ArtemisSharedModule, ArtemisSharedComponentModule], + imports: [ArtemisSharedModule, ArtemisSharedComponentModule, FormDateTimePickerComponent], }) export class CleanupServiceComponent implements OnInit { private dialogErrorSource = new Subject(); diff --git a/src/main/webapp/app/app.config.ts b/src/main/webapp/app/app.config.ts index 90ee4be97e9f..45eeac18b897 100644 --- a/src/main/webapp/app/app.config.ts +++ b/src/main/webapp/app/app.config.ts @@ -32,6 +32,7 @@ import { ArtemisSharedModule } from 'app/shared/shared.module'; import { UserSettingsModule } from 'app/shared/user-settings/user-settings.module'; import { ArtemisNavigationUtilService } from 'app/utils/navigation.utils'; import { provideNgxWebstorage, withLocalStorage, withNgxWebstorageConfig, withSessionStorage } from 'ngx-webstorage'; +import { OwlNativeDateTimeModule } from '@danielmoncada/angular-datetime-picker'; export function initOrionConnector(connector: OrionConnectorService) { return () => OrionConnectorService.initConnector(connector); @@ -49,6 +50,7 @@ export const appConfig: ApplicationConfig = { RouterModule, ScrollingModule, UserSettingsModule, + OwlNativeDateTimeModule, TranslateModule.forRoot({ loader: { provide: TranslateLoader, diff --git a/src/main/webapp/app/app.routes.ts b/src/main/webapp/app/app.routes.ts index 1ee5b6003bfe..11c10ecaebc6 100644 --- a/src/main/webapp/app/app.routes.ts +++ b/src/main/webapp/app/app.routes.ts @@ -63,11 +63,11 @@ const routes: Routes = [ // ===== TEAM ==== { path: 'course-management/:courseId/exercises/:exerciseId/teams', - loadChildren: () => import('./exercises/shared/team/team.module').then((m) => m.ArtemisTeamModule), + loadChildren: () => import('./exercises/shared/team/team.route').then((m) => m.teamRoute), }, { path: 'courses/:courseId/exercises/:exerciseId/teams', - loadChildren: () => import('./exercises/shared/team/team.module').then((m) => m.ArtemisTeamModule), + loadChildren: () => import('./exercises/shared/team/team.route').then((m) => m.teamRoute), }, // ===== ACCOUNT ==== { @@ -130,25 +130,13 @@ const routes: Routes = [ // ===== COURSE MANAGEMENT ===== { path: 'course-management', - loadChildren: () => import('./course/manage/course-management.module').then((m) => m.ArtemisCourseManagementModule), + loadChildren: () => import('./course/manage/course-management.route').then((m) => m.courseManagementState), }, { path: 'course-management/:courseId/programming-exercises/:exerciseId/code-editor', - loadChildren: () => import('./exercises/programming/manage/code-editor/code-editor-management.module').then((m) => m.ArtemisCodeEditorManagementModule), - }, - { - path: 'course-management/:courseId/text-exercises/:exerciseId', - loadChildren: () => import('./exercises/text/assess/text-submission-assessment.module').then((m) => m.ArtemisTextSubmissionAssessmentModule), - }, - { - path: 'course-management/:courseId/text-exercises/:exerciseId/example-submissions/:exampleSubmissionId', - loadChildren: () => import('./exercises/text/manage/example-text-submission/example-text-submission.module').then((m) => m.ArtemisExampleTextSubmissionModule), - }, - { - path: 'course-management/:courseId/programming-exercises/:exerciseId', - loadChildren: () => - import('./exercises/programming/manage/programming-exercise-management-routing.module').then((m) => m.ArtemisProgrammingExerciseManagementRoutingModule), + loadChildren: () => import('./exercises/programming/manage/code-editor/code-editor-management-routes').then((m) => m.routes), }, + { path: 'courses', loadChildren: () => import('./overview/courses.module').then((m) => m.ArtemisCoursesModule), @@ -161,7 +149,7 @@ const routes: Routes = [ // ===== GRADING SYSTEM ===== { path: 'courses/:courseId/grading-system', - loadChildren: () => import('./grading-system/grading-system.module').then((m) => m.GradingSystemModule), + loadChildren: () => import('./grading-system/grading-system.route').then((m) => m.gradingSystemState), }, { @@ -187,7 +175,7 @@ const routes: Routes = [ }, { path: 'courses/:courseId/exams/:examId/grading-system', - loadChildren: () => import('./grading-system/grading-system.module').then((m) => m.GradingSystemModule), + loadChildren: () => import('./grading-system/grading-system.route').then((m) => m.gradingSystemState), }, { path: 'courses/:courseId/exams/:examId/exercises/:exerciseId/repository', @@ -195,7 +183,7 @@ const routes: Routes = [ }, { path: 'features', - loadChildren: () => import('./feature-overview/feature-overview.module').then((m) => m.FeatureOverviewModule), + loadChildren: () => import('./feature-overview/feature-overview.route').then((m) => m.featureOverviewState), }, { path: 'lti', diff --git a/src/main/webapp/app/assessment/assessment-instructions/assessment-instructions.module.ts b/src/main/webapp/app/assessment/assessment-instructions/assessment-instructions.module.ts deleted file mode 100644 index d321368a4a10..000000000000 --- a/src/main/webapp/app/assessment/assessment-instructions/assessment-instructions.module.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ArtemisModelingEditorModule } from 'app/exercises/modeling/shared/modeling-editor.module'; -import { ExpandableSectionComponent } from './expandable-section/expandable-section.component'; -import { CollapsableAssessmentInstructionsComponent } from './collapsable-assessment-instructions/collapsable-assessment-instructions.component'; -import { AssessmentInstructionsComponent } from './assessment-instructions/assessment-instructions.component'; -import { ArtemisAssessmentSharedModule } from 'app/assessment/assessment-shared.module'; -import { StructuredGradingInstructionsAssessmentLayoutComponent } from 'app/assessment/structured-grading-instructions-assessment-layout/structured-grading-instructions-assessment-layout.component'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { ArtemisMarkdownModule } from 'app/shared/markdown.module'; -import { OrionAssessmentInstructionsComponent } from 'app/orion/assessment/orion-assessment-instructions.component'; - -@NgModule({ - imports: [ - CommonModule, - NgbModule, - ArtemisSharedModule, - ArtemisModelingEditorModule, - ArtemisAssessmentSharedModule, - ArtemisSharedComponentModule, - ArtemisMarkdownModule, - ExpandableSectionComponent, - AssessmentInstructionsComponent, - OrionAssessmentInstructionsComponent, - CollapsableAssessmentInstructionsComponent, - StructuredGradingInstructionsAssessmentLayoutComponent, - ], - exports: [ - CollapsableAssessmentInstructionsComponent, - ExpandableSectionComponent, - StructuredGradingInstructionsAssessmentLayoutComponent, - AssessmentInstructionsComponent, - OrionAssessmentInstructionsComponent, - ], -}) -export class AssessmentInstructionsModule {} diff --git a/src/main/webapp/app/assessment/assessment-locks/assessment-locks.route.ts b/src/main/webapp/app/assessment/assessment-locks/assessment-locks.route.ts index fa4b9e2319d2..83dcc2693df9 100644 --- a/src/main/webapp/app/assessment/assessment-locks/assessment-locks.route.ts +++ b/src/main/webapp/app/assessment/assessment-locks/assessment-locks.route.ts @@ -6,7 +6,7 @@ import { CourseManagementResolve } from 'app/course/manage/course-management-res export const assessmentLocksRoute: Routes = [ { - path: ':courseId/exams/:examId/assessment-locks', + path: 'exams/:examId/assessment-locks', loadComponent: () => import('./assessment-locks.component').then((m) => m.AssessmentLocksComponent), resolve: { course: CourseManagementResolve, @@ -18,7 +18,7 @@ export const assessmentLocksRoute: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/assessment-locks', + path: 'assessment-locks', loadComponent: () => import('./assessment-locks.component').then((m) => m.AssessmentLocksComponent), resolve: { course: CourseManagementResolve, diff --git a/src/main/webapp/app/assessment/assessment-shared.module.ts b/src/main/webapp/app/assessment/assessment-shared.module.ts deleted file mode 100644 index 0677f2d0c174..000000000000 --- a/src/main/webapp/app/assessment/assessment-shared.module.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { AssessmentHeaderComponent } from './assessment-header/assessment-header.component'; -import { AssessmentLayoutComponent } from './assessment-layout/assessment-layout.component'; -import { AssessmentComplaintAlertComponent } from './assessment-complaint-alert/assessment-complaint-alert.component'; -import { ScoreDisplayComponent } from '../shared/score-display/score-display.component'; -import { UnreferencedFeedbackDetailComponent } from 'app/assessment/unreferenced-feedback-detail/unreferenced-feedback-detail.component'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { AssessmentLocksComponent } from 'app/assessment/assessment-locks/assessment-locks.component'; -import { RouterModule } from '@angular/router'; -import { assessmentLocksRoute } from 'app/assessment/assessment-locks/assessment-locks.route'; -import { UnreferencedFeedbackComponent } from 'app/exercises/shared/unreferenced-feedback/unreferenced-feedback.component'; -import { ArtemisMarkdownModule } from 'app/shared/markdown.module'; -import { AssessmentCorrectionRoundBadgeComponent } from 'app/assessment/unreferenced-feedback-detail/assessment-correction-round-badge/assessment-correction-round-badge.component'; -import { ArtemisGradingInstructionLinkIconModule } from 'app/shared/grading-instruction-link-icon/grading-instruction-link-icon.module'; -import { ArtemisFeedbackModule } from 'app/exercises/shared/feedback/feedback.module'; -import { AssessmentNoteComponent } from 'app/assessment/assessment-note/assessment-note.component'; -import { FeedbackContentPipe } from 'app/shared/pipes/feedback-content.pipe'; -import { QuotePipe } from 'app/shared/pipes/quote.pipe'; -import { ComplaintsForTutorComponent } from 'app/complaints/complaints-for-tutor/complaints-for-tutor.component'; - -const ENTITY_STATES = [...assessmentLocksRoute]; - -@NgModule({ - imports: [ - ArtemisSharedModule, - ComplaintsForTutorComponent, - ArtemisSharedComponentModule, - RouterModule.forChild(ENTITY_STATES), - ArtemisMarkdownModule, - ArtemisGradingInstructionLinkIconModule, - ArtemisFeedbackModule, - FeedbackContentPipe, - QuotePipe, - AssessmentHeaderComponent, - AssessmentLayoutComponent, - AssessmentComplaintAlertComponent, - ScoreDisplayComponent, - UnreferencedFeedbackDetailComponent, - AssessmentLocksComponent, - UnreferencedFeedbackComponent, - AssessmentCorrectionRoundBadgeComponent, - AssessmentNoteComponent, - ], - exports: [ - AssessmentLayoutComponent, - ScoreDisplayComponent, - UnreferencedFeedbackDetailComponent, - AssessmentLocksComponent, - UnreferencedFeedbackComponent, - AssessmentCorrectionRoundBadgeComponent, - ], -}) -export class ArtemisAssessmentSharedModule {} diff --git a/src/main/webapp/app/complaints/list-of-complaints/list-of-complaints.module.ts b/src/main/webapp/app/complaints/list-of-complaints/list-of-complaints.module.ts deleted file mode 100644 index 94122fae0136..000000000000 --- a/src/main/webapp/app/complaints/list-of-complaints/list-of-complaints.module.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ListOfComplaintsComponent } from './list-of-complaints.component'; -import { ComplaintService } from 'app/complaints/complaint.service'; -import { RouterModule } from '@angular/router'; -import { listOfComplaintsRoute } from 'app/complaints/list-of-complaints/list-of-complaints.route'; - -const ENTITY_STATES = [...listOfComplaintsRoute]; - -@NgModule({ - imports: [RouterModule.forChild(ENTITY_STATES), ListOfComplaintsComponent], - exports: [ListOfComplaintsComponent], - providers: [ComplaintService], -}) -export class ArtemisListOfComplaintsModule {} diff --git a/src/main/webapp/app/complaints/list-of-complaints/list-of-complaints.route.ts b/src/main/webapp/app/complaints/list-of-complaints/list-of-complaints.route.ts index 0058ab0a505c..b60a7640c61b 100644 --- a/src/main/webapp/app/complaints/list-of-complaints/list-of-complaints.route.ts +++ b/src/main/webapp/app/complaints/list-of-complaints/list-of-complaints.route.ts @@ -9,7 +9,7 @@ import { CourseManagementResolve } from 'app/course/manage/course-management-res export const listOfComplaintsRoute: Routes = [ { - path: ':courseId/complaints', + path: 'complaints', loadComponent: () => import('app/complaints/list-of-complaints/list-of-complaints.component').then((m) => m.ListOfComplaintsComponent), resolve: { course: CourseManagementResolve, @@ -22,7 +22,7 @@ export const listOfComplaintsRoute: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/exams/:examId/complaints', + path: 'exams/:examId/complaints', loadComponent: () => import('app/complaints/list-of-complaints/list-of-complaints.component').then((m) => m.ListOfComplaintsComponent), resolve: { course: CourseManagementResolve, @@ -36,7 +36,7 @@ export const listOfComplaintsRoute: Routes = [ }, ...exerciseTypes.map((exerciseType) => { return { - path: ':courseId/' + exerciseType + '-exercises/:exerciseId/complaints', + path: exerciseType + '-exercises/:exerciseId/complaints', component: ListOfComplaintsComponent, data: { authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], @@ -47,7 +47,7 @@ export const listOfComplaintsRoute: Routes = [ }; }), { - path: ':courseId/more-feedback-requests', + path: 'more-feedback-requests', loadComponent: () => import('app/complaints/list-of-complaints/list-of-complaints.component').then((m) => m.ListOfComplaintsComponent), resolve: { course: CourseManagementResolve, @@ -61,7 +61,7 @@ export const listOfComplaintsRoute: Routes = [ }, ...exerciseTypes.map((exerciseType) => { return { - path: ':courseId/' + exerciseType + '-exercises/:exerciseId/more-feedback-requests', + path: exerciseType + '-exercises/:exerciseId/more-feedback-requests', component: ListOfComplaintsComponent, data: { authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], diff --git a/src/main/webapp/app/course/competencies/competency.module.ts b/src/main/webapp/app/course/competencies/competency.module.ts index 23bca7e4cdfb..670753d09f4d 100644 --- a/src/main/webapp/app/course/competencies/competency.module.ts +++ b/src/main/webapp/app/course/competencies/competency.module.ts @@ -7,7 +7,6 @@ import { CompetencyCardComponent } from 'app/course/competencies/competency-card import { CompetenciesPopoverComponent } from './competencies-popover/competencies-popover.component'; import { NgxGraphModule } from '@swimlane/ngx-graph'; import { CompetencyRingsComponent } from 'app/course/competencies/competency-rings/competency-rings.component'; -import { FormDateTimePickerModule } from 'app/shared/date-time-picker/date-time-picker.module'; import { NgbAccordionModule, NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { CompetencyRecommendationDetailComponent } from 'app/course/competencies/generate-competencies/competency-recommendation-detail.component'; import { CourseDescriptionFormComponent } from 'app/course/competencies/generate-competencies/course-description-form.component'; @@ -31,7 +30,6 @@ import { ArtemisMarkdownEditorModule } from 'app/shared/markdown-editor/markdown NgbModule, ArtemisSharedComponentModule, RouterModule, - FormDateTimePickerModule, NgbAccordionModule, ArtemisMarkdownModule, IrisModule, diff --git a/src/main/webapp/app/course/competencies/components/import-course-competencies-settings/import-course-competencies-settings.component.ts b/src/main/webapp/app/course/competencies/components/import-course-competencies-settings/import-course-competencies-settings.component.ts index 641b41b90334..46bb7208b603 100644 --- a/src/main/webapp/app/course/competencies/components/import-course-competencies-settings/import-course-competencies-settings.component.ts +++ b/src/main/webapp/app/course/competencies/components/import-course-competencies-settings/import-course-competencies-settings.component.ts @@ -4,7 +4,6 @@ import { FormsModule } from '@angular/forms'; import { OwlDateTimeModule, OwlNativeDateTimeModule } from '@danielmoncada/angular-datetime-picker'; import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; import { faCalendarAlt, faCircleXmark, faQuestionCircle } from '@fortawesome/free-solid-svg-icons'; -import { FormDateTimePickerModule } from 'app/shared/date-time-picker/date-time-picker.module'; import { ArtemisSharedModule } from 'app/shared/shared.module'; export class CourseCompetencyImportSettings { @@ -17,7 +16,7 @@ export class CourseCompetencyImportSettings { @Component({ selector: 'jhi-import-course-competencies-settings', - imports: [FormDateTimePickerModule, FormsModule, CommonModule, FontAwesomeModule, OwlDateTimeModule, OwlNativeDateTimeModule, ArtemisSharedModule], + imports: [FormsModule, CommonModule, FontAwesomeModule, OwlDateTimeModule, OwlNativeDateTimeModule, ArtemisSharedModule], templateUrl: './import-course-competencies-settings.component.html', styleUrl: './import-course-competencies-settings.component.scss', }) diff --git a/src/main/webapp/app/course/competencies/forms/common-course-competency-form.component.ts b/src/main/webapp/app/course/competencies/forms/common-course-competency-form.component.ts index 9b52ec609d18..46037399f6b5 100644 --- a/src/main/webapp/app/course/competencies/forms/common-course-competency-form.component.ts +++ b/src/main/webapp/app/course/competencies/forms/common-course-competency-form.component.ts @@ -6,14 +6,13 @@ import { CompetencyTaxonomy, CourseCompetency, CourseCompetencyValidators, DEFAU import { faQuestionCircle, faTimes } from '@fortawesome/free-solid-svg-icons'; import { CourseCompetencyFormData } from 'app/course/competencies/forms/course-competency-form.component'; import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { FormDateTimePickerModule } from 'app/shared/date-time-picker/date-time-picker.module'; import { ArtemisMarkdownModule } from 'app/shared/markdown.module'; import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; import { ArtemisCompetenciesModule } from 'app/course/competencies/competency.module'; import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; import { merge } from 'rxjs'; import { ArtemisMarkdownEditorModule } from 'app/shared/markdown-editor/markdown-editor.module'; -import { DateTimePickerType } from 'app/shared/date-time-picker/date-time-picker.component'; +import { DateTimePickerType, FormDateTimePickerComponent } from 'app/shared/date-time-picker/date-time-picker.component'; import { ArtemisFormsModule } from 'app/forms/artemis-forms.module'; @Component({ @@ -22,7 +21,6 @@ import { ArtemisFormsModule } from 'app/forms/artemis-forms.module'; styleUrls: ['./common-course-competency-form.component.scss'], imports: [ ArtemisSharedModule, - FormDateTimePickerModule, ArtemisMarkdownModule, NgbDropdownModule, ArtemisFormsModule, @@ -30,6 +28,7 @@ import { ArtemisFormsModule } from 'app/forms/artemis-forms.module'; ArtemisCompetenciesModule, ArtemisSharedComponentModule, ArtemisMarkdownEditorModule, + FormDateTimePickerComponent, ], }) export class CommonCourseCompetencyFormComponent implements OnInit, OnChanges { diff --git a/src/main/webapp/app/course/course-scores/course-scores-routing.module.ts b/src/main/webapp/app/course/course-scores/course-scores-routing.module.ts deleted file mode 100644 index 5f6227f0a7fb..000000000000 --- a/src/main/webapp/app/course/course-scores/course-scores-routing.module.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { RouterModule, Routes } from '@angular/router'; - -import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; -import { NgModule } from '@angular/core'; -import { Authority } from 'app/shared/constants/authority.constants'; -import { CourseManagementResolve } from 'app/course/manage/course-management-resolve.service'; - -const routes: Routes = [ - { - path: ':courseId/scores', - loadComponent: () => import('app/course/manage/course-management-tab-bar/course-management-tab-bar.component').then((m) => m.CourseManagementTabBarComponent), - children: [ - { - path: '', - loadComponent: () => import('app/course/course-scores/course-scores.component').then((m) => m.CourseScoresComponent), - resolve: { - course: CourseManagementResolve, - }, - data: { - authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], - pageTitle: 'artemisApp.instructorDashboard.title', - }, - canActivate: [UserRouteAccessService], - }, - ], - }, -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule], -}) -export class ArtemisCourseScoresRoutingModule {} diff --git a/src/main/webapp/app/course/course-scores/course-scores.module.ts b/src/main/webapp/app/course/course-scores/course-scores.module.ts deleted file mode 100644 index 3936ab34157d..000000000000 --- a/src/main/webapp/app/course/course-scores/course-scores.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { CourseScoresComponent } from './course-scores.component'; -import { ArtemisCourseScoresRoutingModule } from 'app/course/course-scores/course-scores-routing.module'; -import { ArtemisParticipantScoresModule } from 'app/shared/participant-scores/participant-scores.module'; -import { ExportModule } from 'app/shared/export/export.module'; - -@NgModule({ - imports: [ArtemisSharedModule, ArtemisCourseScoresRoutingModule, ArtemisParticipantScoresModule, ExportModule, CourseScoresComponent], -}) -export class ArtemisCourseScoresModule {} diff --git a/src/main/webapp/app/course/dashboards/assessment-dashboard/assessment-dashboard.component.ts b/src/main/webapp/app/course/dashboards/assessment-dashboard/assessment-dashboard.component.ts index 0678c09f3f34..077d5ddfa9b1 100644 --- a/src/main/webapp/app/course/dashboards/assessment-dashboard/assessment-dashboard.component.ts +++ b/src/main/webapp/app/course/dashboards/assessment-dashboard/assessment-dashboard.component.ts @@ -29,10 +29,10 @@ import { ExamAssessmentButtonsComponent } from 'app/course/dashboards/assessment import { FormsModule } from '@angular/forms'; import { ArtemisSharedCommonModule } from 'app/shared/shared-common.module'; import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap'; -import { ArtemisTutorParticipationGraphModule } from 'app/shared/dashboards/tutor-participation-graph/tutor-participation-graph.module'; -import { ArtemisExerciseAssessmentDashboardModule } from 'app/exercises/shared/dashboards/tutor/exercise-assessment-dashboard.module'; -import { ArtemisTutorLeaderboardModule } from 'app/shared/dashboards/tutor-leaderboard/tutor-leaderboard.module'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; +import { SecondCorrectionEnableButtonComponent } from 'app/exercises/shared/dashboards/tutor/second-correction-button/second-correction-enable-button.component'; +import { TutorParticipationGraphComponent } from 'app/shared/dashboards/tutor-participation-graph/tutor-participation-graph.component'; +import { TutorLeaderboardComponent } from 'app/shared/dashboards/tutor-leaderboard/tutor-leaderboard.component'; @Component({ selector: 'jhi-assessment-dashboard', @@ -49,10 +49,10 @@ import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; FormsModule, ArtemisSharedCommonModule, NgbTooltip, - ArtemisTutorParticipationGraphModule, - ArtemisExerciseAssessmentDashboardModule, - ArtemisTutorLeaderboardModule, ArtemisTranslatePipe, + SecondCorrectionEnableButtonComponent, + TutorParticipationGraphComponent, + TutorLeaderboardComponent, ], }) export class AssessmentDashboardComponent implements OnInit { diff --git a/src/main/webapp/app/course/dashboards/assessment-dashboard/assessment-dashboard.module.ts b/src/main/webapp/app/course/dashboards/assessment-dashboard/assessment-dashboard.module.ts deleted file mode 100644 index df96e7dbeec2..000000000000 --- a/src/main/webapp/app/course/dashboards/assessment-dashboard/assessment-dashboard.module.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { assessmentDashboardRoute } from './assessment-dashboard.route'; -import { AssessmentDashboardComponent } from './assessment-dashboard.component'; -import { ArtemisTutorLeaderboardModule } from 'app/shared/dashboards/tutor-leaderboard/tutor-leaderboard.module'; -import { ArtemisResultModule } from 'app/exercises/shared/result/result.module'; -import { ArtemisTutorParticipationGraphModule } from 'app/shared/dashboards/tutor-participation-graph/tutor-participation-graph.module'; -import { ArtemisExerciseAssessmentDashboardModule } from 'app/exercises/shared/dashboards/tutor/exercise-assessment-dashboard.module'; -import { AssessmentDashboardInformationComponent } from 'app/course/dashboards/assessment-dashboard/assessment-dashboard-information.component'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { PieChartModule } from '@swimlane/ngx-charts'; -import { ExamAssessmentButtonsComponent } from './exam-assessment-buttons/exam-assessment-buttons.component'; - -const ENTITY_STATES = [...assessmentDashboardRoute]; - -@NgModule({ - imports: [ - ArtemisSharedModule, - ArtemisResultModule, - RouterModule.forChild(ENTITY_STATES), - ArtemisTutorLeaderboardModule, - ArtemisTutorParticipationGraphModule, - ArtemisExerciseAssessmentDashboardModule, - ArtemisSharedComponentModule, - PieChartModule, - AssessmentDashboardComponent, - AssessmentDashboardInformationComponent, - ExamAssessmentButtonsComponent, - ], -}) -export class ArtemisAssessmentDashboardModule {} diff --git a/src/main/webapp/app/course/dashboards/assessment-dashboard/assessment-dashboard.route.ts b/src/main/webapp/app/course/dashboards/assessment-dashboard/assessment-dashboard.route.ts deleted file mode 100644 index bc5742db0660..000000000000 --- a/src/main/webapp/app/course/dashboards/assessment-dashboard/assessment-dashboard.route.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Routes } from '@angular/router'; -import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; - -import { Authority } from 'app/shared/constants/authority.constants'; -import { CourseManagementResolve } from 'app/course/manage/course-management-resolve.service'; - -export const assessmentDashboardRoute: Routes = [ - { - path: ':courseId/assessment-dashboard', - loadComponent: () => import('app/course/manage/course-management-tab-bar/course-management-tab-bar.component').then((m) => m.CourseManagementTabBarComponent), - children: [ - { - path: '', - loadComponent: () => import('./assessment-dashboard.component').then((m) => m.AssessmentDashboardComponent), - resolve: { - course: CourseManagementResolve, - }, - data: { - authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], - pageTitle: 'artemisApp.assessmentDashboard.home.title', - }, - canActivate: [UserRouteAccessService], - }, - ], - }, -]; diff --git a/src/main/webapp/app/course/learning-paths/components/learning-path-exercise/learning-path-exercise.component.ts b/src/main/webapp/app/course/learning-paths/components/learning-path-exercise/learning-path-exercise.component.ts index 028748ebf32f..2e744d1d57a7 100644 --- a/src/main/webapp/app/course/learning-paths/components/learning-path-exercise/learning-path-exercise.component.ts +++ b/src/main/webapp/app/course/learning-paths/components/learning-path-exercise/learning-path-exercise.component.ts @@ -1,11 +1,9 @@ import { ChangeDetectionStrategy, Component, ViewContainerRef, effect, inject, input } from '@angular/core'; import { CourseExerciseDetailsComponent } from 'app/overview/exercise-details/course-exercise-details.component'; -import { CourseExerciseDetailsModule } from 'app/overview/exercise-details/course-exercise-details.module'; @Component({ selector: 'jhi-learning-path-exercise', changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CourseExerciseDetailsModule], templateUrl: './learning-path-exercise.component.html', }) export class LearningPathExerciseComponent { diff --git a/src/main/webapp/app/course/manage/course-management.module.ts b/src/main/webapp/app/course/manage/course-management.module.ts deleted file mode 100644 index bf0afc89a1d2..000000000000 --- a/src/main/webapp/app/course/manage/course-management.module.ts +++ /dev/null @@ -1,144 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ReactiveFormsModule } from '@angular/forms'; -import { RouterModule } from '@angular/router'; -import { ArtemisFileUploadExerciseManagementModule } from 'app/exercises/file-upload/manage/file-upload-exercise-management.module'; -import { CourseExerciseCardComponent } from 'app/course/manage/course-exercise-card.component'; -import { FormDateTimePickerModule } from 'app/shared/date-time-picker/date-time-picker.module'; -import { ArtemisColorSelectorModule } from 'app/shared/color-selector/color-selector.module'; -import { MatChipsModule } from '@angular/material/chips'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { CourseManagementExercisesComponent } from 'app/course/manage/course-management-exercises.component'; -import { CourseDetailComponent } from 'app/course/manage/detail/course-detail.component'; -import { CourseUpdateComponent } from 'app/course/manage/course-update.component'; -import { courseManagementState } from 'app/course/manage/course-management.route'; -import { CourseManagementComponent } from 'app/course/manage/course-management.component'; -import { OrionModule } from 'app/shared/orion/orion.module'; -import { ArtemisProgrammingExerciseManagementModule } from 'app/exercises/programming/manage/programming-exercise-management.module'; -import { ArtemisQuizManagementModule } from 'app/exercises/quiz/manage/quiz-management.module'; -import { ArtemisExerciseModule } from 'app/exercises/shared/exercise/exercise.module'; -import { ArtemisLectureModule } from 'app/lecture/lecture.module'; -import { ArtemisTextExerciseManagementModule } from 'app/exercises/text/manage/text-exercise-management.module'; -import { ArtemisDashboardsModule } from 'app/shared/dashboards/dashboards.module'; -import { ArtemisParticipationModule } from 'app/exercises/shared/participation/participation.module'; -import { ArtemisModelingExerciseManagementModule } from 'app/exercises/modeling/manage/modeling-exercise-management.module'; -import { ArtemisCourseScoresModule } from 'app/course/course-scores/course-scores.module'; -import { ArtemisExerciseScoresModule } from 'app/exercises/shared/exercise-scores/exercise-scores.module'; -import { ArtemisFileUploadAssessmentModule } from 'app/exercises/file-upload/assess/file-upload-assessment.module'; -import { ArtemisModelingAssessmentEditorModule } from 'app/exercises/modeling/assess/modeling-assessment-editor/modeling-assessment-editor.module'; -import { NgxDatatableModule } from '@siemens/ngx-datatable'; -import { ArtemisDataTableModule } from 'app/shared/data-table/data-table.module'; -import { ArtemisModelingExerciseModule } from 'app/exercises/modeling/manage/modeling-exercise.module'; -import { ArtemisTextExerciseModule } from 'app/exercises/text/manage/text-exercise/text-exercise.module'; -import { ArtemisProgrammingExerciseModule } from 'app/exercises/programming/shared/programming-exercise.module'; -import { ArtemisListOfComplaintsModule } from 'app/complaints/list-of-complaints/list-of-complaints.module'; -import { ArtemisAssessmentSharedModule } from 'app/assessment/assessment-shared.module'; -import { ArtemisSharedPipesModule } from 'app/shared/pipes/shared-pipes.module'; -import { ArtemisCompetenciesModule } from 'app/course/competencies/competency.module'; -import { CourseManagementCardComponent } from 'app/course/manage/overview/course-management-card.component'; -import { CourseManagementExerciseRowComponent } from './overview/course-management-exercise-row.component'; -import { CourseManagementOverviewStatisticsComponent } from './overview/course-management-overview-statistics.component'; -import { ArtemisTutorParticipationGraphModule } from 'app/shared/dashboards/tutor-participation-graph/tutor-participation-graph.module'; -import { ArtemisMarkdownModule } from 'app/shared/markdown.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { CourseManagementStatisticsComponent } from 'app/course/manage/course-management-statistics.component'; -import { CourseDetailDoughnutChartComponent } from 'app/course/manage/detail/course-detail-doughnut-chart.component'; -import { OrionCourseManagementExercisesComponent } from 'app/orion/management/orion-course-management-exercises.component'; -import { CourseDetailLineChartComponent } from 'app/course/manage/detail/course-detail-line-chart.component'; -import { UserImportModule } from 'app/shared/user-import/user-import.module'; -import { CourseManagementExercisesSearchComponent } from 'app/course/manage/course-management-exercises-search.component'; -import { LineChartModule, PieChartModule } from '@swimlane/ngx-charts'; -import { ArtemisPlagiarismModule } from 'app/exercises/shared/plagiarism/plagiarism.module'; -import { ArtemisChartsModule } from 'app/shared/chart/artemis-charts.module'; - -import { ArtemisFullscreenModule } from 'app/shared/fullscreen/fullscreen.module'; -import { ArtemisCourseGroupModule } from 'app/shared/course-group/course-group.module'; -import { CourseGroupMembershipComponent } from './course-group-membership/course-group-membership.component'; - -import { CourseLtiConfigurationComponent } from 'app/course/manage/course-lti-configuration/course-lti-configuration.component'; -import { EditCourseLtiConfigurationComponent } from 'app/course/manage/course-lti-configuration/edit-course-lti-configuration.component'; -import { NgbNavModule } from '@ng-bootstrap/ng-bootstrap'; -import { ExerciseCategoriesModule } from 'app/shared/exercise-categories/exercise-categories.module'; -import { CourseManagementTabBarComponent } from 'app/course/manage/course-management-tab-bar/course-management-tab-bar.component'; -import { ArtemisExerciseCreateButtonsModule } from 'app/exercises/shared/manage/exercise-create-buttons.module'; -import { IrisModule } from 'app/iris/iris.module'; -import { DetailModule } from 'app/detail-overview-list/detail.module'; -import { BuildQueueComponent } from 'app/localci/build-queue/build-queue.component'; -import { SubmissionResultStatusModule } from 'app/overview/submission-result-status.module'; -import { ImageCropperModalComponent } from 'app/course/manage/image-cropper-modal.component'; -import { HeaderCourseComponent } from 'app/overview/header-course.component'; -import { ArtemisMarkdownEditorModule } from 'app/shared/markdown-editor/markdown-editor.module'; -import { ComplaintsForTutorComponent } from 'app/complaints/complaints-for-tutor/complaints-for-tutor.component'; - -@NgModule({ - imports: [ - ArtemisSharedModule, - RouterModule.forChild(courseManagementState), - FormDateTimePickerModule, - ReactiveFormsModule, - OrionModule, - MatChipsModule, - ArtemisExerciseModule, - ArtemisLectureModule, - ArtemisFullscreenModule, - ArtemisCourseScoresModule, - ArtemisCompetenciesModule, - ArtemisExerciseScoresModule, - ArtemisProgrammingExerciseManagementModule, - ArtemisFileUploadExerciseManagementModule, - ArtemisQuizManagementModule, - ArtemisTextExerciseManagementModule, - ArtemisModelingExerciseManagementModule, - ArtemisProgrammingExerciseModule, - ArtemisTextExerciseModule, - ArtemisModelingExerciseModule, - ArtemisColorSelectorModule, - ArtemisDashboardsModule, - ArtemisParticipationModule, - ComplaintsForTutorComponent, - ArtemisListOfComplaintsModule, - ArtemisFileUploadAssessmentModule, - ArtemisModelingAssessmentEditorModule, - NgxDatatableModule, - ArtemisDataTableModule, - ArtemisAssessmentSharedModule, - ArtemisSharedPipesModule, - ArtemisTutorParticipationGraphModule, - ArtemisMarkdownModule, - ArtemisSharedComponentModule, - UserImportModule, - LineChartModule, - PieChartModule, - ArtemisPlagiarismModule, - ArtemisChartsModule, - ArtemisCourseGroupModule, - ExerciseCategoriesModule, - NgbNavModule, - ArtemisExerciseCreateButtonsModule, - IrisModule, - DetailModule, - SubmissionResultStatusModule, - ArtemisMarkdownEditorModule, - CourseLtiConfigurationComponent, - EditCourseLtiConfigurationComponent, - CourseManagementComponent, - CourseDetailComponent, - CourseUpdateComponent, - CourseExerciseCardComponent, - CourseManagementExercisesComponent, - OrionCourseManagementExercisesComponent, - CourseManagementStatisticsComponent, - CourseManagementCardComponent, - CourseManagementExerciseRowComponent, - CourseManagementOverviewStatisticsComponent, - CourseDetailDoughnutChartComponent, - CourseDetailLineChartComponent, - CourseManagementExercisesSearchComponent, - CourseGroupMembershipComponent, - CourseManagementTabBarComponent, - BuildQueueComponent, - ImageCropperModalComponent, - HeaderCourseComponent, - ], - exports: [HeaderCourseComponent], -}) -export class ArtemisCourseManagementModule {} diff --git a/src/main/webapp/app/course/manage/course-management.route.ts b/src/main/webapp/app/course/manage/course-management.route.ts index fc55b6daf8c3..20fc48baec40 100644 --- a/src/main/webapp/app/course/manage/course-management.route.ts +++ b/src/main/webapp/app/course/manage/course-management.route.ts @@ -7,6 +7,9 @@ import { PendingChangesGuard } from 'app/shared/guard/pending-changes.guard'; import { LocalCIGuard } from 'app/localci/localci-guard.service'; import { IrisGuard } from 'app/iris/iris-guard.service'; import { FaqResolve } from 'app/faq/faq-resolve.service'; +import { ExerciseAssessmentDashboardComponent } from 'app/exercises/shared/dashboards/tutor/exercise-assessment-dashboard.component'; +import { isOrion } from 'app/shared/orion/orion'; +import { OrionExerciseAssessmentDashboardComponent } from 'app/orion/assessment/orion-exercise-assessment-dashboard.component'; export const courseManagementState: Routes = [ { @@ -51,28 +54,63 @@ export const courseManagementState: Routes = [ pageTitle: 'artemisApp.course.gradingSystem', }, canActivate: [UserRouteAccessService], - loadChildren: () => import('app/grading-system/grading-system.module').then((m) => m.GradingSystemModule), + loadChildren: () => import('app/grading-system/grading-system.route').then((m) => m.gradingSystemState), }, { path: ':courseId/iris-settings', - loadChildren: () => - import('app/iris/settings/iris-course-settings-update/iris-course-settings-update-routing.module').then((m) => m.IrisCourseSettingsUpdateRoutingModule), + loadChildren: () => import('app/iris/settings/iris-course-settings-update/iris-course-settings-update.route').then((m) => m.routes), + }, + { + path: ':courseId/lectures', + loadChildren: () => import('app/lecture/lecture.route').then((m) => m.lectureRoute), }, { path: ':courseId/tutorial-groups', resolve: { course: TutorialGroupManagementResolve, }, - loadChildren: () => - import('app/course/tutorial-groups/tutorial-groups-management/tutorial-groups-management.module').then((m) => m.ArtemisTutorialGroupsManagementModule), + loadChildren: () => import('app/course/tutorial-groups/tutorial-groups-management/tutorial-groups-management.route').then((m) => m.tutorialGroupManagementRoutes), + }, + { + path: ':courseId/assessment-dashboard/:exerciseId', + loadComponent: () => (isOrion ? OrionExerciseAssessmentDashboardComponent : ExerciseAssessmentDashboardComponent), + data: { + authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], + pageTitle: 'artemisApp.exerciseAssessmentDashboard.home.title', + }, + canActivate: [UserRouteAccessService], + }, + { + path: ':courseId/assessment-dashboard', + loadComponent: () => import('app/course/dashboards/assessment-dashboard/assessment-dashboard.component').then((m) => m.AssessmentDashboardComponent), + resolve: { + course: CourseManagementResolve, + }, + data: { + authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], + pageTitle: 'artemisApp.assessmentDashboard.home.title', + }, + canActivate: [UserRouteAccessService], + }, + { + path: ':courseId/scores', + loadComponent: () => import('app/course/course-scores/course-scores.component').then((m) => m.CourseScoresComponent), + resolve: { + course: CourseManagementResolve, + }, + data: { + authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], + pageTitle: 'artemisApp.instructorDashboard.title', + }, + canActivate: [UserRouteAccessService], }, { path: ':courseId/plagiarism-cases', - loadChildren: () => import('../plagiarism-cases/instructor-view/plagiarism-cases-instructor-view.module').then((m) => m.ArtemisPlagiarismCasesInstructorViewModule), + loadChildren: () => import('app/course/plagiarism-cases/instructor-view/plagiarism-instructor-view.route').then((m) => m.plagiarismInstructorRoutes), }, { path: ':courseId/exams/:examId/plagiarism-cases', - loadChildren: () => import('../plagiarism-cases/instructor-view/plagiarism-cases-instructor-view.module').then((m) => m.ArtemisPlagiarismCasesInstructorViewModule), + loadChildren: () => import('../plagiarism-cases/instructor-view/plagiarism-instructor-view.route').then((m) => m.plagiarismInstructorRoutes), }, { path: ':courseId/exams', @@ -189,6 +227,63 @@ export const courseManagementState: Routes = [ }, canActivate: [UserRouteAccessService], }, + { + path: '', + loadChildren: () => import('app/complaints/list-of-complaints/list-of-complaints.route').then((m) => m.listOfComplaintsRoute), + }, + { + path: '', + loadChildren: () => import('app/assessment/assessment-locks/assessment-locks.route').then((m) => m.assessmentLocksRoute), + }, + // we have to define the redirects here. When we define them in the child routes, the redirect doesn't work + { + path: 'text-exercises', + redirectTo: 'exercises', + }, + { + path: 'modeling-exercises', + redirectTo: 'exercises', + }, + { + path: 'file-upload-exercises', + redirectTo: 'exercises', + }, + { + path: 'quiz-exercises', + redirectTo: 'exercises', + }, + { + path: 'programming-exercises', + redirectTo: 'exercises', + }, + { + path: '', + loadChildren: () => import('app/exercises/text/manage/text-exercise/text-exercise.route').then((m) => m.textExerciseRoute), + }, + { + path: '', + loadChildren: () => import('app/exercises/programming/manage/programming-exercise-management.route').then((m) => m.routes), + }, + { + path: '', + loadChildren: () => import('app/exercises/quiz/manage/quiz-management.route').then((m) => m.quizManagementRoute), + }, + { + path: '', + loadChildren: () => import('app/exercises/file-upload/manage/file-upload-exercise-management.route').then((m) => m.routes), + }, + { + path: '', + loadChildren: () => import('app/exercises/modeling/manage/modeling-exercise.route').then((m) => m.routes), + }, + { + path: '', + loadChildren: () => import('app/exercises/shared/exercise-scores/exercise-scores.route').then((m) => m.routes), + }, + { + path: '', + loadChildren: () => import('app/exercises/shared/participation/participation.route').then((m) => m.routes), + }, { // Create a new path without a component defined to prevent the CompetencyManagementComponent from being always rendered path: 'competency-management', diff --git a/src/main/webapp/app/course/plagiarism-cases/instructor-view/plagiarism-cases-instructor-view.module.ts b/src/main/webapp/app/course/plagiarism-cases/instructor-view/plagiarism-instructor-view.route.ts similarity index 57% rename from src/main/webapp/app/course/plagiarism-cases/instructor-view/plagiarism-cases-instructor-view.module.ts rename to src/main/webapp/app/course/plagiarism-cases/instructor-view/plagiarism-instructor-view.route.ts index 014af93d4b6b..0a0e001672e0 100644 --- a/src/main/webapp/app/course/plagiarism-cases/instructor-view/plagiarism-cases-instructor-view.module.ts +++ b/src/main/webapp/app/course/plagiarism-cases/instructor-view/plagiarism-instructor-view.route.ts @@ -1,13 +1,8 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; -import { PlagiarismCaseInstructorDetailViewComponent } from 'app/course/plagiarism-cases/instructor-view/detail-view/plagiarism-case-instructor-detail-view.component'; -import { PlagiarismCasesInstructorViewComponent } from 'app/course/plagiarism-cases/instructor-view/plagiarism-cases-instructor-view.component'; - import { Authority } from 'app/shared/constants/authority.constants'; import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; -import { ArtemisPlagiarismCasesSharedModule } from 'app/course/plagiarism-cases/shared/plagiarism-cases-shared.module'; +import { Routes } from '@angular/router'; -const routes: Routes = [ +const plagiarismInstructorRoutes: Routes = [ { path: '', loadComponent: () => import('app/course/plagiarism-cases/instructor-view/plagiarism-cases-instructor-view.component').then((m) => m.PlagiarismCasesInstructorViewComponent), @@ -31,7 +26,4 @@ const routes: Routes = [ }, ]; -@NgModule({ - imports: [RouterModule.forChild(routes), ArtemisPlagiarismCasesSharedModule, PlagiarismCasesInstructorViewComponent, PlagiarismCaseInstructorDetailViewComponent], -}) -export class ArtemisPlagiarismCasesInstructorViewModule {} +export { plagiarismInstructorRoutes }; diff --git a/src/main/webapp/app/course/plagiarism-cases/shared/plagiarism-cases-shared.module.ts b/src/main/webapp/app/course/plagiarism-cases/shared/plagiarism-cases-shared.module.ts index 9c6cba144a0a..1df16ab32b4b 100644 --- a/src/main/webapp/app/course/plagiarism-cases/shared/plagiarism-cases-shared.module.ts +++ b/src/main/webapp/app/course/plagiarism-cases/shared/plagiarism-cases-shared.module.ts @@ -1,27 +1,12 @@ import { NgModule } from '@angular/core'; import { ArtemisSharedModule } from 'app/shared/shared.module'; import { ArtemisPlagiarismModule } from 'app/exercises/shared/plagiarism/plagiarism.module'; -import { ArtemisTutorParticipationGraphModule } from 'app/shared/dashboards/tutor-participation-graph/tutor-participation-graph.module'; import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; import { PlagiarismCaseVerdictComponent } from 'app/course/plagiarism-cases/shared/verdict/plagiarism-case-verdict.component'; import { PlagiarismCaseReviewComponent } from 'app/course/plagiarism-cases/shared/review/plagiarism-case-review.component'; @NgModule({ - imports: [ - ArtemisSharedModule, - ArtemisSharedComponentModule, - ArtemisPlagiarismModule, - ArtemisTutorParticipationGraphModule, - PlagiarismCaseVerdictComponent, - PlagiarismCaseReviewComponent, - ], - exports: [ - PlagiarismCaseVerdictComponent, - PlagiarismCaseReviewComponent, - ArtemisSharedModule, - ArtemisSharedComponentModule, - ArtemisPlagiarismModule, - ArtemisTutorParticipationGraphModule, - ], + imports: [ArtemisSharedModule, ArtemisSharedComponentModule, ArtemisPlagiarismModule, PlagiarismCaseVerdictComponent, PlagiarismCaseReviewComponent], + exports: [PlagiarismCaseVerdictComponent, PlagiarismCaseReviewComponent, ArtemisSharedModule, ArtemisSharedComponentModule, ArtemisPlagiarismModule], }) export class ArtemisPlagiarismCasesSharedModule {} diff --git a/src/main/webapp/app/course/tutorial-groups/shared/tutorial-groups-shared.module.ts b/src/main/webapp/app/course/tutorial-groups/shared/tutorial-groups-shared.module.ts index 017447f887fc..ea7ec755baba 100644 --- a/src/main/webapp/app/course/tutorial-groups/shared/tutorial-groups-shared.module.ts +++ b/src/main/webapp/app/course/tutorial-groups/shared/tutorial-groups-shared.module.ts @@ -11,7 +11,6 @@ import { TutorialGroupRowComponent } from './tutorial-groups-table/tutorial-grou import { TutorialGroupUtilizationIndicatorComponent } from './tutorial-group-utilization-indicator/tutorial-group-utilization-indicator.component'; import { RemoveSecondsPipe } from 'app/course/tutorial-groups/shared/remove-seconds.pipe'; import { MeetingPatternPipe } from 'app/course/tutorial-groups/shared/meeting-pattern.pipe'; -import { DetailModule } from 'app/detail-overview-list/detail.module'; import { IconCardComponent } from 'app/shared/icon-card/icon-card.component'; import { ProfilePictureComponent } from 'app/shared/profile-picture/profile-picture.component'; @@ -19,7 +18,6 @@ import { ProfilePictureComponent } from 'app/shared/profile-picture/profile-pict imports: [ ArtemisSharedModule, RouterModule, - DetailModule, IconCardComponent, ProfilePictureComponent, TutorialGroupsTableComponent, diff --git a/src/main/webapp/app/course/tutorial-groups/tutorial-groups-management/tutorial-groups-management.module.ts b/src/main/webapp/app/course/tutorial-groups/tutorial-groups-management/tutorial-groups-management.module.ts deleted file mode 100644 index 4167f7d975f6..000000000000 --- a/src/main/webapp/app/course/tutorial-groups/tutorial-groups-management/tutorial-groups-management.module.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { RouterModule } from '@angular/router'; -import { tutorialGroupManagementRoutes } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-groups-management.route'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ArtemisDataTableModule } from 'app/shared/data-table/data-table.module'; -import { ArtemisCourseGroupModule } from 'app/shared/course-group/course-group.module'; -import { NgxDatatableModule } from '@siemens/ngx-datatable'; -import { OwlDateTimeModule } from '@danielmoncada/angular-datetime-picker'; -import { ArtemisTutorialGroupsSharedModule } from '../shared/tutorial-groups-shared.module'; -import { RegisteredStudentsComponent } from 'app/course/tutorial-groups/tutorial-groups-management/registered-students/registered-students.component'; -import { TutorialGroupsConfigurationFormComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-groups-configuration/crud/tutorial-groups-configuration-form/tutorial-groups-configuration-form.component'; -import { EditTutorialGroupSessionComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-group-sessions/crud/edit-tutorial-group-session/edit-tutorial-group-session.component'; -import { CreateTutorialGroupsConfigurationComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-groups-configuration/crud/create-tutorial-groups-configuration/create-tutorial-groups-configuration.component'; -import { TutorialGroupFormComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-groups/crud/tutorial-group-form/tutorial-group-form.component'; -import { CancellationModalComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-group-sessions/tutorial-group-sessions-management/cancellation-modal/cancellation-modal.component'; -import { TutorialGroupSessionRowButtonsComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-group-sessions/tutorial-group-sessions-management/tutorial-group-session-row-buttons/tutorial-group-session-row-buttons.component'; -import { TutorialGroupsManagementComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-groups/tutorial-groups-management/tutorial-groups-management.component'; -import { TutorialGroupFreePeriodFormComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-free-periods/crud/tutorial-free-period-form/tutorial-group-free-period-form.component'; -import { EditTutorialGroupComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-groups/crud/edit-tutorial-group/edit-tutorial-group.component'; -import { CreateTutorialGroupSessionComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-group-sessions/crud/create-tutorial-group-session/create-tutorial-group-session.component'; -import { CreateTutorialGroupComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-groups/crud/create-tutorial-group/create-tutorial-group.component'; -import { TutorialGroupFreePeriodRowButtonsComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-free-periods/tutorial-free-periods-management/tutorial-group-free-period-row-buttons/tutorial-group-free-period-row-buttons.component'; -import { TutorialGroupRowButtonsComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-groups/tutorial-groups-management/tutorial-group-row-buttons/tutorial-group-row-buttons.component'; -import { TutorialGroupSessionsManagementComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-group-sessions/tutorial-group-sessions-management/tutorial-group-sessions-management.component'; -import { ScheduleFormComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-groups/crud/tutorial-group-form/schedule-form/schedule-form.component'; -import { CreateTutorialGroupFreePeriodComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-free-periods/crud/create-tutorial-group-free-period/create-tutorial-group-free-period.component'; -import { EditTutorialGroupFreePeriodComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-free-periods/crud/edit-tutorial-group-free-period/edit-tutorial-group-free-period.component'; -import { ArtemisMarkdownModule } from 'app/shared/markdown.module'; -import { TutorialGroupSessionFormComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-group-sessions/crud/tutorial-group-session-form/tutorial-group-session-form.component'; -import { TutorialGroupFreePeriodsManagementComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-free-periods/tutorial-free-periods-management/tutorial-group-free-periods-management.component'; -import { TutorialGroupManagementDetailComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-groups/detail/tutorial-group-management-detail.component'; -import { EditTutorialGroupsConfigurationComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-groups-configuration/crud/edit-tutorial-groups-configuration/edit-tutorial-groups-configuration.component'; -import { NgModule } from '@angular/core'; -import { TutorialGroupsCourseInformationComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-groups/tutorial-groups-management/tutorial-groups-course-information/tutorial-groups-course-information.component'; -import { TutorialGroupsRegistrationImportDialogComponent } from './tutorial-groups/tutorial-groups-management/tutorial-groups-import-dialog/tutorial-groups-registration-import-dialog.component'; -import { TutorialGroupsImportButtonComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-groups/tutorial-groups-management/tutorial-groups-import-button/tutorial-groups-import-button.component'; -import { TutorialGroupsChecklistComponent } from './tutorial-groups-checklist/tutorial-groups-checklist.component'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { TutorialGroupFreePeriodsTableComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-free-periods/tutorial-free-periods-management/tutorial-group-free-periods-table/tutorial-group-free-periods-table.component'; -import { TutorialGroupsExportButtonComponent } from 'app/course/tutorial-groups/tutorial-groups-management/tutorial-groups/tutorial-groups-management/tutorial-groups-export-button.component/tutorial-groups-export-button.component'; -import { ArtemisMarkdownEditorModule } from 'app/shared/markdown-editor/markdown-editor.module'; - -@NgModule({ - imports: [ - RouterModule.forChild(tutorialGroupManagementRoutes), - ArtemisSharedModule, - ArtemisDataTableModule, - NgxDatatableModule, - ArtemisCourseGroupModule, - ArtemisMarkdownModule, - OwlDateTimeModule, - ArtemisTutorialGroupsSharedModule, - ArtemisSharedComponentModule, - ArtemisMarkdownEditorModule, - TutorialGroupsManagementComponent, - TutorialGroupFormComponent, - CreateTutorialGroupComponent, - EditTutorialGroupComponent, - TutorialGroupRowButtonsComponent, - RegisteredStudentsComponent, - TutorialGroupManagementDetailComponent, - TutorialGroupsCourseInformationComponent, - TutorialGroupSessionsManagementComponent, - ScheduleFormComponent, - TutorialGroupsConfigurationFormComponent, - CreateTutorialGroupsConfigurationComponent, - EditTutorialGroupsConfigurationComponent, - TutorialGroupSessionFormComponent, - CreateTutorialGroupSessionComponent, - CancellationModalComponent, - TutorialGroupFreePeriodsManagementComponent, - TutorialGroupFreePeriodFormComponent, - CreateTutorialGroupFreePeriodComponent, - EditTutorialGroupSessionComponent, - TutorialGroupSessionRowButtonsComponent, - TutorialGroupFreePeriodRowButtonsComponent, - EditTutorialGroupFreePeriodComponent, - TutorialGroupsImportButtonComponent, - TutorialGroupsExportButtonComponent, - TutorialGroupsRegistrationImportDialogComponent, - TutorialGroupsChecklistComponent, - TutorialGroupFreePeriodsTableComponent, - ], -}) -export class ArtemisTutorialGroupsManagementModule {} diff --git a/src/main/webapp/app/detail-overview-list/detail.module.ts b/src/main/webapp/app/detail-overview-list/detail.module.ts deleted file mode 100644 index cbc9acfd2aa7..000000000000 --- a/src/main/webapp/app/detail-overview-list/detail.module.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; -import { DetailOverviewListComponent } from 'app/detail-overview-list/detail-overview-list.component'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { SubmissionResultStatusModule } from 'app/overview/submission-result-status.module'; -import { ArtemisProgrammingExerciseStatusModule } from 'app/exercises/programming/manage/status/programming-exercise-status.module'; -import { ArtemisProgrammingExerciseActionsModule } from 'app/exercises/programming/shared/actions/programming-exercise-actions.module'; -import { ArtemisProgrammingExerciseInstructionsEditorModule } from 'app/exercises/programming/manage/instructions-editor/programming-exercise-instructions-editor.module'; -import { ArtemisProgrammingExerciseLifecycleModule } from 'app/exercises/programming/shared/lifecycle/programming-exercise-lifecycle.module'; -import { AssessmentInstructionsModule } from 'app/assessment/assessment-instructions/assessment-instructions.module'; -import { IrisModule } from 'app/iris/iris.module'; -import { ArtemisModelingEditorModule } from 'app/exercises/modeling/shared/modeling-editor.module'; -import { ProgrammingExerciseBuildPlanCheckoutDirectoriesComponent } from 'app/exercises/programming/shared/build-details/programming-exercise-build-plan-checkout-directories.component'; -import { ProgrammingExerciseRepositoryAndBuildPlanDetailsComponent } from 'app/exercises/programming/shared/build-details/programming-exercise-repository-and-build-plan-details.component'; -import { ExerciseDetailDirective } from 'app/detail-overview-list/exercise-detail.directive'; -import { NoDataComponent } from 'app/shared/no-data-component'; - -@NgModule({ - imports: [ - RouterModule, - ArtemisSharedModule, - ArtemisSharedComponentModule, - SubmissionResultStatusModule, - ArtemisProgrammingExerciseStatusModule, - ArtemisProgrammingExerciseActionsModule, - ArtemisProgrammingExerciseInstructionsEditorModule, - ArtemisProgrammingExerciseLifecycleModule, - AssessmentInstructionsModule, - IrisModule, - ArtemisModelingEditorModule, - ProgrammingExerciseBuildPlanCheckoutDirectoriesComponent, - ProgrammingExerciseRepositoryAndBuildPlanDetailsComponent, - ExerciseDetailDirective, - NoDataComponent, - DetailOverviewListComponent, - ], - exports: [DetailOverviewListComponent], -}) -export class DetailModule {} diff --git a/src/main/webapp/app/exam/exam-scores/exam-scores.component.ts b/src/main/webapp/app/exam/exam-scores/exam-scores.component.ts index 8a92155a2700..1ba96b7a69dd 100644 --- a/src/main/webapp/app/exam/exam-scores/exam-scores.component.ts +++ b/src/main/webapp/app/exam/exam-scores/exam-scores.component.ts @@ -59,10 +59,10 @@ import { } from 'app/shared/export/export-constants'; import { BonusStrategy } from 'app/entities/bonus.model'; import { ExamScoresAverageScoresGraphComponent } from 'app/exam/exam-scores/exam-scores-average-scores-graph.component'; -import { ArtemisParticipantScoresModule } from 'app/shared/participant-scores/participant-scores.module'; -import { ExportModule } from 'app/shared/export/export.module'; import { ArtemisSharedCommonModule } from 'app/shared/shared-common.module'; import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; +import { ParticipantScoresDistributionComponent } from 'app/shared/participant-scores/participant-scores-distribution/participant-scores-distribution.component'; +import { ExportButtonComponent } from 'app/shared/export/export-button.component'; export enum MedianType { PASSED, @@ -75,7 +75,14 @@ export enum MedianType { templateUrl: './exam-scores.component.html', changeDetection: ChangeDetectionStrategy.OnPush, styleUrls: ['./exam-scores.component.scss', '../../shared/chart/vertical-bar-chart.scss'], - imports: [RouterLink, ArtemisSharedComponentModule, ArtemisSharedCommonModule, ExamScoresAverageScoresGraphComponent, ArtemisParticipantScoresModule, ExportModule], + imports: [ + RouterLink, + ArtemisSharedComponentModule, + ArtemisSharedCommonModule, + ExamScoresAverageScoresGraphComponent, + ParticipantScoresDistributionComponent, + ExportButtonComponent, + ], }) export class ExamScoresComponent implements OnInit, OnDestroy { private route = inject(ActivatedRoute); diff --git a/src/main/webapp/app/exam/manage/exam-management.route.ts b/src/main/webapp/app/exam/manage/exam-management.route.ts index 47113ae86d0f..22f718e2256c 100644 --- a/src/main/webapp/app/exam/manage/exam-management.route.ts +++ b/src/main/webapp/app/exam/manage/exam-management.route.ts @@ -1,10 +1,6 @@ import { Routes } from '@angular/router'; import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; -import { TextExerciseResolver } from 'app/exercises/text/manage/text-exercise/text-exercise.route'; - -import { ProgrammingExerciseResolve } from 'app/exercises/programming/manage/programming-exercise-management-routing.module'; - import { PendingChangesGuard } from 'app/shared/guard/pending-changes.guard'; import { Authority } from 'app/shared/constants/authority.constants'; import { ExerciseAssessmentDashboardComponent } from 'app/exercises/shared/dashboards/tutor/exercise-assessment-dashboard.component'; @@ -26,6 +22,8 @@ import { ModelingExerciseResolver } from 'app/exercises/modeling/manage/modeling import { CourseResolve, ExamResolve, ExerciseGroupResolve, StudentExamResolve } from 'app/exam/manage/exam-management-resolve.service'; import { LocalVCGuard } from 'app/localvc/localvc-guard.service'; +import { ProgrammingExerciseResolve } from 'app/exercises/programming/manage/programming-exercise-resolve.service'; +import { TextExerciseResolver } from 'app/exercises/text/manage/text-exercise/text-exercise-resolver.service'; export const examManagementRoute: Routes = [ { @@ -188,7 +186,7 @@ export const examManagementRoute: Routes = [ pageTitle: 'artemisApp.examManagement.gradingSystem', }, canActivate: [UserRouteAccessService], - loadChildren: () => import('app/grading-system/grading-system.module').then((m) => m.GradingSystemModule), + loadChildren: () => import('app/grading-system/grading-system.route').then((m) => m.gradingSystemState), }, { path: ':examId/bonus', @@ -916,15 +914,15 @@ export const examManagementRoute: Routes = [ }, { path: ':examId/exercise-groups/:exerciseGroupId/programming-exercises/:exerciseId/code-editor', - loadChildren: () => import('../../exercises/programming/manage/code-editor/code-editor-management.module').then((m) => m.ArtemisCodeEditorManagementModule), + loadChildren: () => import('../../exercises/programming/manage/code-editor/code-editor-management-routes').then((m) => m.routes), }, { path: ':examId/exercise-groups/:exerciseGroupId/text-exercises/:exerciseId', - loadChildren: () => import('../../exercises/text/assess/text-submission-assessment.module').then((m) => m.ArtemisTextSubmissionAssessmentModule), + loadChildren: () => import('../../exercises/text/assess/text-submission-assessment.route').then((m) => m.textSubmissionAssessmentRoutes), }, { path: ':examId/exercise-groups/:exerciseGroupId/text-exercises/:exerciseId/example-submissions/:exampleSubmissionId', - loadChildren: () => import('../../exercises/text/manage/example-text-submission/example-text-submission.module').then((m) => m.ArtemisExampleTextSubmissionModule), + loadChildren: () => import('../../exercises/text/manage/example-text-submission/example-text-submission.route').then((m) => m.exampleTextSubmissionRoute), }, { path: ':examId/exercise-groups/:exerciseGroupId/modeling-exercises/:exerciseId/example-submissions', diff --git a/src/main/webapp/app/exercises/file-upload/assess/file-upload-assessment.module.ts b/src/main/webapp/app/exercises/file-upload/assess/file-upload-assessment.module.ts deleted file mode 100644 index 7a65e727ac23..000000000000 --- a/src/main/webapp/app/exercises/file-upload/assess/file-upload-assessment.module.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisFileUploadAssessmentRoutingModule } from './file-upload-assessment.route'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { FileUploadAssessmentComponent } from './file-upload-assessment.component'; -import { ArtemisAssessmentSharedModule } from 'app/assessment/assessment-shared.module'; -import { ArtemisResultModule } from 'app/exercises/shared/result/result.module'; -import { ModelingAssessmentModule } from 'app/exercises/modeling/assess/modeling-assessment.module'; -import { AssessmentInstructionsModule } from 'app/assessment/assessment-instructions/assessment-instructions.module'; -import { ArtemisMarkdownModule } from 'app/shared/markdown.module'; -import { SubmissionResultStatusModule } from 'app/overview/submission-result-status.module'; -import { ArtemisAssessmentProgressLabelModule } from 'app/exercises/shared/assessment-progress-label/assessment-progress-label.module'; - -@NgModule({ - imports: [ - ArtemisSharedModule, - ArtemisResultModule, - ArtemisAssessmentSharedModule, - ArtemisFileUploadAssessmentRoutingModule, - ModelingAssessmentModule, - AssessmentInstructionsModule, - ArtemisMarkdownModule, - SubmissionResultStatusModule, - ArtemisAssessmentProgressLabelModule, - FileUploadAssessmentComponent, - ], -}) -export class ArtemisFileUploadAssessmentModule {} diff --git a/src/main/webapp/app/exercises/file-upload/assess/file-upload-assessment.route.ts b/src/main/webapp/app/exercises/file-upload/assess/file-upload-assessment.route.ts index 1acf7913fb87..52ee3a907e7d 100644 --- a/src/main/webapp/app/exercises/file-upload/assess/file-upload-assessment.route.ts +++ b/src/main/webapp/app/exercises/file-upload/assess/file-upload-assessment.route.ts @@ -1,12 +1,11 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; import { Authority } from 'app/shared/constants/authority.constants'; export const routes: Routes = [ { - path: ':courseId/file-upload-exercises/:exerciseId/submissions/:submissionId/assessment', + path: 'assessment', loadComponent: () => import('app/exercises/file-upload/assess/file-upload-assessment.component').then((m) => m.FileUploadAssessmentComponent), data: { authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], @@ -15,7 +14,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/file-upload-exercises/:exerciseId/submissions/:submissionId/assessments/:resultId', + path: 'assessments/:resultId', loadComponent: () => import('app/exercises/file-upload/assess/file-upload-assessment.component').then((m) => m.FileUploadAssessmentComponent), data: { authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], @@ -24,9 +23,3 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule], -}) -export class ArtemisFileUploadAssessmentRoutingModule {} diff --git a/src/main/webapp/app/exercises/file-upload/manage/file-upload-exercise-management.module.ts b/src/main/webapp/app/exercises/file-upload/manage/file-upload-exercise-management.module.ts deleted file mode 100644 index 2b9a93a12606..000000000000 --- a/src/main/webapp/app/exercises/file-upload/manage/file-upload-exercise-management.module.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { FormDateTimePickerModule } from 'app/shared/date-time-picker/date-time-picker.module'; -import { ArtemisCategorySelectorModule } from 'app/shared/category-selector/category-selector.module'; -import { ArtemisDifficultyPickerModule } from 'app/exercises/shared/difficulty-picker/difficulty-picker.module'; -import { ArtemisPresentationScoreModule } from 'app/exercises/shared/presentation-score/presentation-score.module'; -import { ArtemisAssessmentSharedModule } from 'app/assessment/assessment-shared.module'; -import { ArtemisMarkdownEditorModule } from 'app/shared/markdown-editor/markdown-editor.module'; -import { FileUploadExerciseComponent } from 'app/exercises/file-upload/manage/file-upload-exercise.component'; -import { FileUploadExerciseUpdateComponent } from 'app/exercises/file-upload/manage/file-upload-exercise-update.component'; -import { FileUploadExerciseDetailComponent } from 'app/exercises/file-upload/manage/file-upload-exercise-detail.component'; -import { ArtemisTeamConfigFormGroupModule } from 'app/exercises/shared/team-config-form-group/team-config-form-group.module'; -import { ArtemisFileUploadExerciseManagementRoutingModule } from 'app/exercises/file-upload/manage/file-upload-exercise-management.route'; -import { StructuredGradingCriterionModule } from 'app/exercises/shared/structured-grading-criterion/structured-grading-criterion.module'; -import { AssessmentInstructionsModule } from 'app/assessment/assessment-instructions/assessment-instructions.module'; -import { ArtemisIncludedInOverallScorePickerModule } from 'app/exercises/shared/included-in-overall-score-picker/included-in-overall-score-picker.module'; -import { ArtemisMarkdownModule } from 'app/shared/markdown.module'; -import { NonProgrammingExerciseDetailCommonActionsModule } from 'app/exercises/shared/exercise-detail-common-actions/non-programming-exercise-detail-common-actions.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { ExerciseCategoriesModule } from 'app/shared/exercise-categories/exercise-categories.module'; -import { ExerciseTitleChannelNameModule } from 'app/exercises/shared/exercise-title-channel-name/exercise-title-channel-name.module'; -import { ExerciseUpdateNotificationModule } from 'app/exercises/shared/exercise-update-notification/exercise-update-notification.module'; -import { DetailModule } from 'app/detail-overview-list/detail.module'; -import { ArtemisExerciseModule } from 'app/exercises/shared/exercise/exercise.module'; -import { ArtemisFormsModule } from 'app/forms/artemis-forms.module'; - -@NgModule({ - imports: [ - ArtemisSharedModule, - ArtemisCategorySelectorModule, - ArtemisIncludedInOverallScorePickerModule, - ArtemisDifficultyPickerModule, - ArtemisMarkdownEditorModule, - ArtemisPresentationScoreModule, - ArtemisAssessmentSharedModule, - ArtemisFileUploadExerciseManagementRoutingModule, - ArtemisTeamConfigFormGroupModule, - FormDateTimePickerModule, - StructuredGradingCriterionModule, - AssessmentInstructionsModule, - ArtemisMarkdownModule, - NonProgrammingExerciseDetailCommonActionsModule, - ArtemisSharedComponentModule, - ArtemisExerciseModule, - ExerciseCategoriesModule, - ExerciseTitleChannelNameModule, - ExerciseUpdateNotificationModule, - DetailModule, - ArtemisFormsModule, - FileUploadExerciseComponent, - FileUploadExerciseDetailComponent, - FileUploadExerciseUpdateComponent, - ], - exports: [FileUploadExerciseComponent], -}) -export class ArtemisFileUploadExerciseManagementModule {} diff --git a/src/main/webapp/app/exercises/file-upload/manage/file-upload-exercise-management.route.ts b/src/main/webapp/app/exercises/file-upload/manage/file-upload-exercise-management.route.ts index 115357a32ba6..ab4ae8728270 100644 --- a/src/main/webapp/app/exercises/file-upload/manage/file-upload-exercise-management.route.ts +++ b/src/main/webapp/app/exercises/file-upload/manage/file-upload-exercise-management.route.ts @@ -1,15 +1,13 @@ -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; -import { NgModule } from '@angular/core'; - import { Authority } from 'app/shared/constants/authority.constants'; import { FileUploadExerciseManagementResolve } from 'app/exercises/file-upload/manage/file-upload-exercise-management-resolve.service'; -const routes: Routes = [ +export const routes: Routes = [ { - path: ':courseId/file-upload-exercises/new', + path: 'file-upload-exercises/new', loadComponent: () => import('app/exercises/file-upload/manage/file-upload-exercise-update.component').then((m) => m.FileUploadExerciseUpdateComponent), resolve: { fileUploadExercise: FileUploadExerciseManagementResolve, @@ -21,7 +19,7 @@ const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/file-upload-exercises/:exerciseId/import', + path: 'file-upload-exercises/:exerciseId/import', loadComponent: () => import('app/exercises/file-upload/manage/file-upload-exercise-update.component').then((m) => m.FileUploadExerciseUpdateComponent), resolve: { fileUploadExercise: FileUploadExerciseManagementResolve, @@ -34,7 +32,7 @@ const routes: Routes = [ }, { - path: ':courseId/file-upload-exercises/:exerciseId/edit', + path: 'file-upload-exercises/:exerciseId/edit', loadComponent: () => import('app/exercises/file-upload/manage/file-upload-exercise-update.component').then((m) => m.FileUploadExerciseUpdateComponent), resolve: { fileUploadExercise: FileUploadExerciseManagementResolve, @@ -46,7 +44,7 @@ const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/file-upload-exercises/:exerciseId', + path: 'file-upload-exercises/:exerciseId', loadComponent: () => import('./file-upload-exercise-detail.component').then((m) => m.FileUploadExerciseDetailComponent), data: { authorities: [Authority.TA, Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], @@ -55,11 +53,7 @@ const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/file-upload-exercises', - redirectTo: ':courseId/exercises', - }, - { - path: ':courseId/file-upload-exercises/:exerciseId/exercise-statistics', + path: 'file-upload-exercises/:exerciseId/exercise-statistics', loadComponent: () => import('app/exercises/shared/statistics/exercise-statistics.component').then((m) => m.ExerciseStatisticsComponent), resolve: { fileUploadExercise: FileUploadExerciseManagementResolve, @@ -70,10 +64,8 @@ const routes: Routes = [ }, canActivate: [UserRouteAccessService], }, + { + path: 'file-upload-exercises/:exerciseId/submissions/:submissionId', + loadChildren: () => import('app/exercises/file-upload/assess/file-upload-assessment.route').then((m) => m.routes), + }, ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule], -}) -export class ArtemisFileUploadExerciseManagementRoutingModule {} diff --git a/src/main/webapp/app/exercises/modeling/assess/modeling-assessment-editor/modeling-assessment-editor.module.ts b/src/main/webapp/app/exercises/modeling/assess/modeling-assessment-editor/modeling-assessment-editor.module.ts deleted file mode 100644 index f7b7326a1670..000000000000 --- a/src/main/webapp/app/exercises/modeling/assess/modeling-assessment-editor/modeling-assessment-editor.module.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { AssessmentInstructionsModule } from 'app/assessment/assessment-instructions/assessment-instructions.module'; -import { ArtemisAssessmentSharedModule } from 'app/assessment/assessment-shared.module'; -import { ArtemisResultModule } from 'app/exercises/shared/result/result.module'; -import { ArtemisModelingAssessmentEditorRoutingModule } from 'app/exercises/modeling/assess/modeling-assessment-editor/modeling-assessment-editor.route'; -import { ModelingAssessmentModule } from 'app/exercises/modeling/assess/modeling-assessment.module'; -import { ModelingAssessmentEditorComponent } from 'app/exercises/modeling/assess/modeling-assessment-editor/modeling-assessment-editor.component'; -import { ArtemisFullscreenModule } from 'app/shared/fullscreen/fullscreen.module'; -import { SubmissionResultStatusModule } from 'app/overview/submission-result-status.module'; -import { ArtemisAssessmentProgressLabelModule } from 'app/exercises/shared/assessment-progress-label/assessment-progress-label.module'; - -@NgModule({ - imports: [ - ArtemisSharedModule, - ArtemisResultModule, - ArtemisFullscreenModule, - AssessmentInstructionsModule, - ArtemisAssessmentSharedModule, - ArtemisModelingAssessmentEditorRoutingModule, - ModelingAssessmentModule, - SubmissionResultStatusModule, - ArtemisAssessmentProgressLabelModule, - ModelingAssessmentEditorComponent, - ], - exports: [ModelingAssessmentEditorComponent], -}) -export class ArtemisModelingAssessmentEditorModule {} diff --git a/src/main/webapp/app/exercises/modeling/assess/modeling-assessment-editor/modeling-assessment-editor.route.ts b/src/main/webapp/app/exercises/modeling/assess/modeling-assessment-editor/modeling-assessment-editor.route.ts index 2c21e3200e1a..a720678f6fe0 100644 --- a/src/main/webapp/app/exercises/modeling/assess/modeling-assessment-editor/modeling-assessment-editor.route.ts +++ b/src/main/webapp/app/exercises/modeling/assess/modeling-assessment-editor/modeling-assessment-editor.route.ts @@ -1,12 +1,11 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; import { Authority } from 'app/shared/constants/authority.constants'; export const routes: Routes = [ { - path: ':courseId/modeling-exercises/:exerciseId/submissions/:submissionId/assessment', + path: 'assessment', loadComponent: () => import('app/exercises/modeling/assess/modeling-assessment-editor/modeling-assessment-editor.component').then((m) => m.ModelingAssessmentEditorComponent), data: { @@ -16,7 +15,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/modeling-exercises/:exerciseId/submissions/:submissionId/assessments/:resultId', + path: 'assessments/:resultId', loadComponent: () => import('app/exercises/modeling/assess/modeling-assessment-editor/modeling-assessment-editor.component').then((m) => m.ModelingAssessmentEditorComponent), data: { @@ -27,9 +26,3 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule], -}) -export class ArtemisModelingAssessmentEditorRoutingModule {} diff --git a/src/main/webapp/app/exercises/modeling/assess/modeling-assessment.module.ts b/src/main/webapp/app/exercises/modeling/assess/modeling-assessment.module.ts deleted file mode 100644 index d324b46c1484..000000000000 --- a/src/main/webapp/app/exercises/modeling/assess/modeling-assessment.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ModelingAssessmentComponent } from 'app/exercises/modeling/assess/modeling-assessment.component'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ArtemisAssessmentSharedModule } from 'app/assessment/assessment-shared.module'; -import { ArtemisModelingEditorModule } from 'app/exercises/modeling/shared/modeling-editor.module'; - -@NgModule({ - imports: [ArtemisSharedModule, ArtemisAssessmentSharedModule, ArtemisModelingEditorModule, ModelingAssessmentComponent], - exports: [ModelingAssessmentComponent], -}) -export class ModelingAssessmentModule {} diff --git a/src/main/webapp/app/exercises/modeling/manage/example-modeling/example-modeling-submission.module.ts b/src/main/webapp/app/exercises/modeling/manage/example-modeling/example-modeling-submission.module.ts deleted file mode 100644 index 6d6b50342419..000000000000 --- a/src/main/webapp/app/exercises/modeling/manage/example-modeling/example-modeling-submission.module.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisExampleModelingSubmissionRoutingModule } from 'app/exercises/modeling/manage/example-modeling/example-modeling-submission.route'; -import { ExampleModelingSubmissionComponent } from 'app/exercises/modeling/manage/example-modeling/example-modeling-submission.component'; -import { ArtemisModelingEditorModule } from 'app/exercises/modeling/shared/modeling-editor.module'; -import { AssessmentInstructionsModule } from 'app/assessment/assessment-instructions/assessment-instructions.module'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ArtemisResultModule } from 'app/exercises/shared/result/result.module'; -import { ModelingAssessmentModule } from 'app/exercises/modeling/assess/modeling-assessment.module'; -import { ArtemisAssessmentSharedModule } from 'app/assessment/assessment-shared.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; - -@NgModule({ - imports: [ - ArtemisSharedModule, - ArtemisResultModule, - ArtemisModelingEditorModule, - ArtemisExampleModelingSubmissionRoutingModule, - ModelingAssessmentModule, - ArtemisAssessmentSharedModule, - AssessmentInstructionsModule, - ArtemisSharedComponentModule, - ExampleModelingSubmissionComponent, - ], -}) -export class ArtemisExampleModelingSubmissionModule {} diff --git a/src/main/webapp/app/exercises/modeling/manage/example-modeling/example-modeling-submission.route.ts b/src/main/webapp/app/exercises/modeling/manage/example-modeling/example-modeling-submission.route.ts deleted file mode 100644 index 387a5d3ec926..000000000000 --- a/src/main/webapp/app/exercises/modeling/manage/example-modeling/example-modeling-submission.route.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; -import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; - -import { Authority } from 'app/shared/constants/authority.constants'; - -export const routes: Routes = [ - { - path: ':courseId/modeling-exercises/:exerciseId/example-submissions/:exampleSubmissionId', - loadComponent: () => import('./example-modeling-submission.component').then((m) => m.ExampleModelingSubmissionComponent), - data: { - authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], - pageTitle: 'artemisApp.exampleSubmission.home.editor', - }, - canActivate: [UserRouteAccessService], - }, -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule], -}) -export class ArtemisExampleModelingSubmissionRoutingModule {} diff --git a/src/main/webapp/app/exercises/modeling/manage/modeling-exercise-management.module.ts b/src/main/webapp/app/exercises/modeling/manage/modeling-exercise-management.module.ts deleted file mode 100644 index 73974a5021a8..000000000000 --- a/src/main/webapp/app/exercises/modeling/manage/modeling-exercise-management.module.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisExampleModelingSubmissionModule } from 'app/exercises/modeling/manage/example-modeling/example-modeling-submission.module'; -import { ArtemisModelingExerciseModule } from 'app/exercises/modeling/manage/modeling-exercise.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { ArtemisSharedPipesModule } from 'app/shared/pipes/shared-pipes.module'; -import { ArtemisSharedCommonModule } from 'app/shared/shared-common.module'; -import { ArtemisMarkdownModule } from 'app/shared/markdown.module'; - -@NgModule({ - imports: [ - ArtemisExampleModelingSubmissionModule, - ArtemisModelingExerciseModule, - ArtemisSharedCommonModule, - ArtemisSharedComponentModule, - ArtemisSharedPipesModule, - ArtemisMarkdownModule, - ], -}) -export class ArtemisModelingExerciseManagementModule {} diff --git a/src/main/webapp/app/exercises/modeling/manage/modeling-exercise.module.ts b/src/main/webapp/app/exercises/modeling/manage/modeling-exercise.module.ts deleted file mode 100644 index 3e5a9684b5b4..000000000000 --- a/src/main/webapp/app/exercises/modeling/manage/modeling-exercise.module.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { FormDateTimePickerModule } from 'app/shared/date-time-picker/date-time-picker.module'; -import { ArtemisCategorySelectorModule } from 'app/shared/category-selector/category-selector.module'; -import { ArtemisDifficultyPickerModule } from 'app/exercises/shared/difficulty-picker/difficulty-picker.module'; -import { ArtemisPresentationScoreModule } from 'app/exercises/shared/presentation-score/presentation-score.module'; -import { ArtemisAssessmentSharedModule } from 'app/assessment/assessment-shared.module'; -import { ArtemisMarkdownEditorModule } from 'app/shared/markdown-editor/markdown-editor.module'; -import { ArtemisModelingEditorModule } from 'app/exercises/modeling/shared/modeling-editor.module'; -import { ModelingExerciseUpdateComponent } from 'app/exercises/modeling/manage/modeling-exercise-update.component'; -import { ArtemisModelingExerciseRoutingModule } from 'app/exercises/modeling/manage/modeling-exercise.route'; -import { ModelingExerciseComponent } from 'app/exercises/modeling/manage/modeling-exercise.component'; -import { ModelingExerciseDetailComponent } from 'app/exercises/modeling/manage/modeling-exercise-detail.component'; -import { ArtemisTeamConfigFormGroupModule } from 'app/exercises/shared/team-config-form-group/team-config-form-group.module'; -import { StructuredGradingCriterionModule } from 'app/exercises/shared/structured-grading-criterion/structured-grading-criterion.module'; -import { AssessmentInstructionsModule } from 'app/assessment/assessment-instructions/assessment-instructions.module'; -import { ArtemisPlagiarismModule } from 'app/exercises/shared/plagiarism/plagiarism.module'; -import { ArtemisIncludedInOverallScorePickerModule } from 'app/exercises/shared/included-in-overall-score-picker/included-in-overall-score-picker.module'; -import { ArtemisMarkdownModule } from 'app/shared/markdown.module'; -import { NonProgrammingExerciseDetailCommonActionsModule } from 'app/exercises/shared/exercise-detail-common-actions/non-programming-exercise-detail-common-actions.module'; -import { ExampleSubmissionsModule } from 'app/exercises/shared/example-submission/example-submissions.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { ExerciseCategoriesModule } from 'app/shared/exercise-categories/exercise-categories.module'; -import { ExerciseTitleChannelNameModule } from 'app/exercises/shared/exercise-title-channel-name/exercise-title-channel-name.module'; -import { ExerciseUpdateNotificationModule } from 'app/exercises/shared/exercise-update-notification/exercise-update-notification.module'; -import { ExerciseUpdatePlagiarismModule } from 'app/exercises/shared/plagiarism/exercise-update-plagiarism/exercise-update-plagiarism.module'; -import { DetailModule } from 'app/detail-overview-list/detail.module'; -import { ArtemisExerciseModule } from 'app/exercises/shared/exercise/exercise.module'; -import { ArtemisFormsModule } from 'app/forms/artemis-forms.module'; -import { ExerciseFeedbackSuggestionOptionsModule } from 'app/exercises/shared/feedback-suggestion/exercise-feedback-suggestion-options.module'; - -@NgModule({ - imports: [ - ArtemisSharedModule, - ArtemisMarkdownEditorModule, - ArtemisCategorySelectorModule, - ArtemisIncludedInOverallScorePickerModule, - ArtemisDifficultyPickerModule, - ArtemisPresentationScoreModule, - ArtemisModelingEditorModule, - ArtemisAssessmentSharedModule, - ArtemisTeamConfigFormGroupModule, - ArtemisModelingExerciseRoutingModule, - ArtemisPlagiarismModule, - FormDateTimePickerModule, - StructuredGradingCriterionModule, - AssessmentInstructionsModule, - ArtemisMarkdownModule, - NonProgrammingExerciseDetailCommonActionsModule, - ExampleSubmissionsModule, - ArtemisSharedComponentModule, - ArtemisExerciseModule, - ExerciseCategoriesModule, - ExerciseTitleChannelNameModule, - ExerciseUpdateNotificationModule, - ExerciseUpdatePlagiarismModule, - ExerciseFeedbackSuggestionOptionsModule, - DetailModule, - ArtemisFormsModule, - ModelingExerciseComponent, - ModelingExerciseDetailComponent, - ModelingExerciseUpdateComponent, - ], - exports: [ModelingExerciseComponent], -}) -export class ArtemisModelingExerciseModule {} diff --git a/src/main/webapp/app/exercises/modeling/manage/modeling-exercise.route.ts b/src/main/webapp/app/exercises/modeling/manage/modeling-exercise.route.ts index aae78b63a80b..0c346463d0b7 100644 --- a/src/main/webapp/app/exercises/modeling/manage/modeling-exercise.route.ts +++ b/src/main/webapp/app/exercises/modeling/manage/modeling-exercise.route.ts @@ -1,5 +1,4 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; import { Authority } from 'app/shared/constants/authority.constants'; @@ -8,7 +7,7 @@ import { ModelingExerciseResolver } from 'app/exercises/modeling/manage/modeling export const routes: Routes = [ { - path: ':courseId/modeling-exercises/new', + path: 'modeling-exercises/new', loadComponent: () => import('app/exercises/modeling/manage/modeling-exercise-update.component').then((m) => m.ModelingExerciseUpdateComponent), resolve: { modelingExercise: ModelingExerciseResolver, @@ -20,7 +19,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/modeling-exercises/:exerciseId/edit', + path: 'modeling-exercises/:exerciseId/edit', loadComponent: () => import('app/exercises/modeling/manage/modeling-exercise-update.component').then((m) => m.ModelingExerciseUpdateComponent), resolve: { modelingExercise: ModelingExerciseResolver, @@ -32,7 +31,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/modeling-exercises/:exerciseId/import', + path: 'modeling-exercises/:exerciseId/import', loadComponent: () => import('app/exercises/modeling/manage/modeling-exercise-update.component').then((m) => m.ModelingExerciseUpdateComponent), resolve: { modelingExercise: ModelingExerciseResolver, @@ -44,7 +43,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/modeling-exercises/:exerciseId', + path: 'modeling-exercises/:exerciseId', loadComponent: () => import('./modeling-exercise-detail.component').then((m) => m.ModelingExerciseDetailComponent), data: { authorities: [Authority.TA, Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], @@ -53,7 +52,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/modeling-exercises/:exerciseId/example-submissions', + path: 'modeling-exercises/:exerciseId/example-submissions', loadComponent: () => import('app/exercises/shared/example-submission/example-submissions.component').then((m) => m.ExampleSubmissionsComponent), resolve: { exercise: ModelingExerciseResolver, @@ -65,7 +64,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/modeling-exercises/:exerciseId/plagiarism', + path: 'modeling-exercises/:exerciseId/plagiarism', loadComponent: () => import('app/exercises/shared/plagiarism/plagiarism-inspector/plagiarism-inspector.component').then((m) => m.PlagiarismInspectorComponent), resolve: { exercise: ModelingExerciseResolver, @@ -77,11 +76,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/modeling-exercises', - redirectTo: ':courseId/exercises', - }, - { - path: ':courseId/modeling-exercises/:exerciseId/exercise-statistics', + path: 'modeling-exercises/:exerciseId/exercise-statistics', loadComponent: () => import('app/exercises/shared/statistics/exercise-statistics.component').then((m) => m.ExerciseStatisticsComponent), resolve: { exercise: ModelingExerciseResolver, @@ -92,10 +87,17 @@ export const routes: Routes = [ }, canActivate: [UserRouteAccessService], }, + { + path: 'modeling-exercises/:exerciseId/example-submissions/:exampleSubmissionId', + loadComponent: () => import('app/exercises/modeling/manage/example-modeling/example-modeling-submission.component').then((m) => m.ExampleModelingSubmissionComponent), + data: { + authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], + pageTitle: 'artemisApp.exampleSubmission.home.editor', + }, + canActivate: [UserRouteAccessService], + }, + { + path: 'modeling-exercises/:exerciseId/submissions/:submissionId', + loadChildren: () => import('app/exercises/modeling/assess/modeling-assessment-editor/modeling-assessment-editor.route').then((m) => m.routes), + }, ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule], -}) -export class ArtemisModelingExerciseRoutingModule {} diff --git a/src/main/webapp/app/exercises/modeling/participate/modeling-participation.module.ts b/src/main/webapp/app/exercises/modeling/participate/modeling-participation.module.ts index 538827d70f1a..94505d5b739b 100644 --- a/src/main/webapp/app/exercises/modeling/participate/modeling-participation.module.ts +++ b/src/main/webapp/app/exercises/modeling/participate/modeling-participation.module.ts @@ -5,7 +5,6 @@ import { ArtemisSharedComponentModule } from 'app/shared/components/shared-compo import { ArtemisResultModule } from 'app/exercises/shared/result/result.module'; import { ArtemisComplaintsModule } from 'app/complaints/complaints.module'; import { ArtemisModelingEditorModule } from 'app/exercises/modeling/shared/modeling-editor.module'; -import { ModelingAssessmentModule } from 'app/exercises/modeling/assess/modeling-assessment.module'; import { ArtemisModelingParticipationRoutingModule } from 'app/exercises/modeling/participate/modeling-participation.route'; import { ArtemisHeaderExercisePageWithDetailsModule } from 'app/exercises/shared/exercise-headers/exercise-headers.module'; @@ -23,7 +22,6 @@ import { RequestFeedbackButtonComponent } from 'app/overview/exercise-details/re ArtemisSharedComponentModule, ArtemisModelingParticipationRoutingModule, ArtemisHeaderExercisePageWithDetailsModule, - ModelingAssessmentModule, ArtemisFullscreenModule, ArtemisMarkdownModule, ArtemisTeamParticipeModule, diff --git a/src/main/webapp/app/exercises/programming/assess/programming-assessment.module.ts b/src/main/webapp/app/exercises/programming/assess/programming-assessment.module.ts deleted file mode 100644 index 0266f6966cc9..000000000000 --- a/src/main/webapp/app/exercises/programming/assess/programming-assessment.module.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { FormDateTimePickerModule } from 'app/shared/date-time-picker/date-time-picker.module'; -import { FormsModule } from '@angular/forms'; - -import { ProgrammingAssessmentRepoExportButtonComponent } from 'app/exercises/programming/assess/repo-export/programming-assessment-repo-export-button.component'; -import { ProgrammingAssessmentRepoExportDialogComponent } from 'app/exercises/programming/assess/repo-export/programming-assessment-repo-export-dialog.component'; -import { ArtemisProgrammingAssessmentRoutingModule } from 'app/exercises/programming/assess/programming-assessment.route'; -import { ArtemisAssessmentSharedModule } from 'app/assessment/assessment-shared.module'; -import { ArtemisCodeEditorModule } from 'app/exercises/programming/shared/code-editor/code-editor.module'; -import { ArtemisResultModule } from 'app/exercises/shared/result/result.module'; -import { CodeEditorTutorAssessmentContainerComponent } from 'app/exercises/programming/assess/code-editor-tutor-assessment-container.component'; -import { ArtemisProgrammingManualAssessmentModule } from 'app/exercises/programming/assess/programming-manual-assessment.module'; -import { AssessmentInstructionsModule } from 'app/assessment/assessment-instructions/assessment-instructions.module'; -import { ArtemisHeaderExercisePageWithDetailsModule } from 'app/exercises/shared/exercise-headers/exercise-headers.module'; -import { OrionTutorAssessmentComponent } from 'app/orion/assessment/orion-tutor-assessment.component'; -import { SubmissionResultStatusModule } from 'app/overview/submission-result-status.module'; -import { ComplaintsForTutorComponent } from 'app/complaints/complaints-for-tutor/complaints-for-tutor.component'; - -@NgModule({ - imports: [ - ArtemisSharedModule, - ArtemisSharedComponentModule, - FormDateTimePickerModule, - FormsModule, - ComplaintsForTutorComponent, - ArtemisProgrammingAssessmentRoutingModule, - ArtemisAssessmentSharedModule, - ArtemisCodeEditorModule, - ArtemisResultModule, - ArtemisProgrammingManualAssessmentModule, - AssessmentInstructionsModule, - ArtemisHeaderExercisePageWithDetailsModule, - SubmissionResultStatusModule, - ProgrammingAssessmentRepoExportButtonComponent, - ProgrammingAssessmentRepoExportDialogComponent, - CodeEditorTutorAssessmentContainerComponent, - OrionTutorAssessmentComponent, - ], - exports: [ProgrammingAssessmentRepoExportButtonComponent], -}) -export class ArtemisProgrammingAssessmentModule {} diff --git a/src/main/webapp/app/exercises/programming/assess/programming-assessment.route.ts b/src/main/webapp/app/exercises/programming/assess/programming-assessment.route.ts index a3fe88a0af22..5834ab3e50af 100644 --- a/src/main/webapp/app/exercises/programming/assess/programming-assessment.route.ts +++ b/src/main/webapp/app/exercises/programming/assess/programming-assessment.route.ts @@ -1,5 +1,4 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; import { CodeEditorTutorAssessmentContainerComponent } from 'app/exercises/programming/assess/code-editor-tutor-assessment-container.component'; import { Authority } from 'app/shared/constants/authority.constants'; @@ -8,7 +7,7 @@ import { OrionTutorAssessmentComponent } from 'app/orion/assessment/orion-tutor- export const routes: Routes = [ { - path: ':courseId/programming-exercises/:exerciseId/submissions/:submissionId/assessment', + path: 'assessment', component: !isOrion ? CodeEditorTutorAssessmentContainerComponent : OrionTutorAssessmentComponent, data: { authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], @@ -17,9 +16,3 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule], -}) -export class ArtemisProgrammingAssessmentRoutingModule {} diff --git a/src/main/webapp/app/exercises/programming/assess/programming-manual-assessment.module.ts b/src/main/webapp/app/exercises/programming/assess/programming-manual-assessment.module.ts deleted file mode 100644 index d53486a4a31a..000000000000 --- a/src/main/webapp/app/exercises/programming/assess/programming-manual-assessment.module.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CodeEditorTutorAssessmentInlineFeedbackComponent } from 'app/exercises/programming/assess/code-editor-tutor-assessment-inline-feedback.component'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { FormDateTimePickerModule } from 'app/shared/date-time-picker/date-time-picker.module'; -import { ArtemisAssessmentSharedModule } from 'app/assessment/assessment-shared.module'; -import { ArtemisGradingInstructionLinkIconModule } from 'app/shared/grading-instruction-link-icon/grading-instruction-link-icon.module'; -import { CodeEditorTutorAssessmentInlineFeedbackSuggestionComponent } from 'app/exercises/programming/assess/code-editor-tutor-assessment-inline-feedback-suggestion.component'; -import { ArtemisFeedbackModule } from 'app/exercises/shared/feedback/feedback.module'; -import { FeedbackContentPipe } from 'app/shared/pipes/feedback-content.pipe'; -import { QuotePipe } from 'app/shared/pipes/quote.pipe'; - -@NgModule({ - imports: [ - ArtemisSharedModule, - ArtemisSharedComponentModule, - FormDateTimePickerModule, - ArtemisAssessmentSharedModule, - ArtemisGradingInstructionLinkIconModule, - ArtemisFeedbackModule, - FeedbackContentPipe, - QuotePipe, - CodeEditorTutorAssessmentInlineFeedbackComponent, - CodeEditorTutorAssessmentInlineFeedbackSuggestionComponent, - ], - exports: [CodeEditorTutorAssessmentInlineFeedbackComponent, CodeEditorTutorAssessmentInlineFeedbackSuggestionComponent], -}) -export class ArtemisProgrammingManualAssessmentModule {} diff --git a/src/main/webapp/app/exercises/programming/manage/code-editor/code-editor-management-routing.module.ts b/src/main/webapp/app/exercises/programming/manage/code-editor/code-editor-management-routes.ts similarity index 90% rename from src/main/webapp/app/exercises/programming/manage/code-editor/code-editor-management-routing.module.ts rename to src/main/webapp/app/exercises/programming/manage/code-editor/code-editor-management-routes.ts index a009e0ff1a75..924c20917b7d 100644 --- a/src/main/webapp/app/exercises/programming/manage/code-editor/code-editor-management-routing.module.ts +++ b/src/main/webapp/app/exercises/programming/manage/code-editor/code-editor-management-routes.ts @@ -1,11 +1,9 @@ -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; - -import { NgModule } from '@angular/core'; import { Authority } from 'app/shared/constants/authority.constants'; -const routes: Routes = [ +export const routes: Routes = [ { path: 'test', loadComponent: () => @@ -63,9 +61,3 @@ const routes: Routes = [ canActivate: [UserRouteAccessService], }, ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule], -}) -export class ArtemisCodeEditorManagementRoutingModule {} diff --git a/src/main/webapp/app/exercises/programming/manage/code-editor/code-editor-management.module.ts b/src/main/webapp/app/exercises/programming/manage/code-editor/code-editor-management.module.ts deleted file mode 100644 index d00b4c8d9978..000000000000 --- a/src/main/webapp/app/exercises/programming/manage/code-editor/code-editor-management.module.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ArtemisCodeEditorManagementRoutingModule } from 'app/exercises/programming/manage/code-editor/code-editor-management-routing.module'; -import { ArtemisCodeEditorModule } from 'app/exercises/programming/shared/code-editor/code-editor.module'; -import { CodeEditorInstructorAndEditorContainerComponent } from 'app/exercises/programming/manage/code-editor/code-editor-instructor-and-editor-container.component'; -import { CodeEditorInstructorAndEditorOrionContainerComponent } from 'app/orion/management/code-editor-instructor-and-editor-orion-container.component'; -import { ArtemisProgrammingExerciseStatusModule } from 'app/exercises/programming/manage/status/programming-exercise-status.module'; -import { ArtemisResultModule } from 'app/exercises/shared/result/result.module'; -import { ArtemisProgrammingExerciseActionsModule } from 'app/exercises/programming/shared/actions/programming-exercise-actions.module'; -import { OrionModule } from 'app/shared/orion/orion.module'; -import { ArtemisProgrammingExerciseInstructionsEditorModule } from 'app/exercises/programming/manage/instructions-editor/programming-exercise-instructions-editor.module'; -import { ArtemisHeaderExercisePageWithDetailsModule } from 'app/exercises/shared/exercise-headers/exercise-headers.module'; -import { SubmissionResultStatusModule } from 'app/overview/submission-result-status.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { IrisModule } from 'app/iris/iris.module'; - -@NgModule({ - imports: [ - ArtemisSharedModule, - ArtemisCodeEditorManagementRoutingModule, - ArtemisCodeEditorModule, - ArtemisProgrammingExerciseStatusModule, - ArtemisResultModule, - ArtemisProgrammingExerciseActionsModule, - OrionModule, - ArtemisProgrammingExerciseInstructionsEditorModule, - ArtemisHeaderExercisePageWithDetailsModule, - SubmissionResultStatusModule, - ArtemisSharedComponentModule, - IrisModule, - CodeEditorInstructorAndEditorContainerComponent, - CodeEditorInstructorAndEditorOrionContainerComponent, - ], -}) -export class ArtemisCodeEditorManagementModule {} diff --git a/src/main/webapp/app/exercises/programming/manage/instructions-editor/programming-exercise-instructions-editor.module.ts b/src/main/webapp/app/exercises/programming/manage/instructions-editor/programming-exercise-instructions-editor.module.ts deleted file mode 100644 index baff3fdae9a6..000000000000 --- a/src/main/webapp/app/exercises/programming/manage/instructions-editor/programming-exercise-instructions-editor.module.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ArtemisMarkdownEditorModule } from 'app/shared/markdown-editor/markdown-editor.module'; -import { ArtemisProgrammingExerciseStatusModule } from 'app/exercises/programming/manage/status/programming-exercise-status.module'; -import { ProgrammingExerciseInstructionAnalysisComponent } from 'app/exercises/programming/manage/instructions-editor/analysis/programming-exercise-instruction-analysis.component'; -import { ProgrammingExerciseEditableInstructionComponent } from 'app/exercises/programming/manage/instructions-editor/programming-exercise-editable-instruction.component'; -import { ProgrammingExerciseInstructionAnalysisService } from 'app/exercises/programming/manage/instructions-editor/analysis/programming-exercise-instruction-analysis.service'; -import { TaskCountWarningComponent } from './analysis/task-count-warning/task-count-warning.component'; - -@NgModule({ - imports: [ - ArtemisSharedModule, - ArtemisMarkdownEditorModule, - ArtemisProgrammingExerciseStatusModule, - ProgrammingExerciseEditableInstructionComponent, - ProgrammingExerciseInstructionAnalysisComponent, - TaskCountWarningComponent, - ], - providers: [ProgrammingExerciseInstructionAnalysisService], - exports: [ProgrammingExerciseEditableInstructionComponent], -}) -export class ArtemisProgrammingExerciseInstructionsEditorModule {} diff --git a/src/main/webapp/app/exercises/programming/manage/programming-exercise-management.module.ts b/src/main/webapp/app/exercises/programming/manage/programming-exercise-management.module.ts deleted file mode 100644 index a0b4f6cf625d..000000000000 --- a/src/main/webapp/app/exercises/programming/manage/programming-exercise-management.module.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ArtemisProgrammingExerciseManagementRoutingModule } from 'app/exercises/programming/manage/programming-exercise-management-routing.module'; -import { ProgrammingExerciseDetailComponent } from 'app/exercises/programming/manage/programming-exercise-detail.component'; -import { ArtemisAssessmentSharedModule } from 'app/assessment/assessment-shared.module'; -import { ArtemisProgrammingAssessmentModule } from 'app/exercises/programming/assess/programming-assessment.module'; -import { ArtemisResultModule } from 'app/exercises/shared/result/result.module'; -import { ArtemisProgrammingExerciseActionsModule } from 'app/exercises/programming/shared/actions/programming-exercise-actions.module'; -import { ArtemisProgrammingExerciseInstructionsEditorModule } from 'app/exercises/programming/manage/instructions-editor/programming-exercise-instructions-editor.module'; -import { ArtemisProgrammingExerciseUpdateModule } from 'app/exercises/programming/manage/update/programming-exercise-update.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { ArtemisProgrammingExerciseStatusModule } from 'app/exercises/programming/manage/status/programming-exercise-status.module'; - -import { ArtemisProgrammingExerciseModule } from 'app/exercises/programming/shared/programming-exercise.module'; -import { AssessmentInstructionsModule } from 'app/assessment/assessment-instructions/assessment-instructions.module'; -import { ProgrammingExerciseEditSelectedComponent } from 'app/exercises/programming/manage/programming-exercise-edit-selected.component'; -import { OrionModule } from 'app/shared/orion/orion.module'; -import { ArtemisPlagiarismModule } from 'app/exercises/shared/plagiarism/plagiarism.module'; -import { ArtemisProgrammingExerciseLifecycleModule } from 'app/exercises/programming/shared/lifecycle/programming-exercise-lifecycle.module'; -import { ProgrammingExerciseInstructorExerciseDownloadComponent } from '../shared/actions/programming-exercise-instructor-exercise-download.component'; -import { SubmissionResultStatusModule } from 'app/overview/submission-result-status.module'; -import { ProgrammingExerciseExampleSolutionRepoDownloadComponent } from 'app/exercises/programming/shared/actions/programming-exercise-example-solution-repo-download.component'; -import { BuildPlanEditorComponent } from 'app/exercises/programming/manage/build-plan-editor.component'; -import { ArtemisCodeEditorModule } from 'app/exercises/programming/shared/code-editor/code-editor.module'; -import { DetailModule } from 'app/detail-overview-list/detail.module'; -import { IrisModule } from 'app/iris/iris.module'; -import { ArtemisExerciseModule } from 'app/exercises/shared/exercise/exercise.module'; -import { MonacoEditorComponent } from 'app/shared/monaco-editor/monaco-editor.component'; -import { CodeEditorHeaderComponent } from 'app/exercises/programming/shared/code-editor/header/code-editor-header.component'; - -@NgModule({ - imports: [ - ArtemisSharedModule, - ArtemisSharedComponentModule, - ArtemisResultModule, - ArtemisAssessmentSharedModule, - ArtemisPlagiarismModule, - ArtemisProgrammingExerciseModule, - ArtemisProgrammingExerciseManagementRoutingModule, - ArtemisProgrammingAssessmentModule, - ArtemisProgrammingExerciseActionsModule, - ArtemisProgrammingExerciseInstructionsEditorModule, - ArtemisProgrammingExerciseUpdateModule, - ArtemisProgrammingExerciseStatusModule, - AssessmentInstructionsModule, - OrionModule, - ArtemisProgrammingExerciseLifecycleModule, - SubmissionResultStatusModule, - ArtemisCodeEditorModule, - ArtemisExerciseModule, - DetailModule, - IrisModule, - MonacoEditorComponent, - CodeEditorHeaderComponent, - ProgrammingExerciseDetailComponent, - ProgrammingExerciseEditSelectedComponent, - ProgrammingExerciseInstructorExerciseDownloadComponent, - ProgrammingExerciseExampleSolutionRepoDownloadComponent, - BuildPlanEditorComponent, - ], - exports: [ProgrammingExerciseExampleSolutionRepoDownloadComponent], -}) -export class ArtemisProgrammingExerciseManagementModule {} diff --git a/src/main/webapp/app/exercises/programming/manage/programming-exercise-management-routing.module.ts b/src/main/webapp/app/exercises/programming/manage/programming-exercise-management.route.ts similarity index 73% rename from src/main/webapp/app/exercises/programming/manage/programming-exercise-management-routing.module.ts rename to src/main/webapp/app/exercises/programming/manage/programming-exercise-management.route.ts index c44e83c4b563..d7e701265d42 100644 --- a/src/main/webapp/app/exercises/programming/manage/programming-exercise-management-routing.module.ts +++ b/src/main/webapp/app/exercises/programming/manage/programming-exercise-management.route.ts @@ -1,33 +1,14 @@ -import { ActivatedRouteSnapshot, Resolve, RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; -import { Injectable, NgModule, inject } from '@angular/core'; - -import { ProgrammingExercise } from 'app/entities/programming/programming-exercise.model'; -import { ProgrammingExerciseService } from 'app/exercises/programming/manage/services/programming-exercise.service'; -import { map } from 'rxjs/operators'; -import { HttpResponse } from '@angular/common/http'; -import { of } from 'rxjs'; import { Authority } from 'app/shared/constants/authority.constants'; import { LocalVCGuard } from 'app/localvc/localvc-guard.service'; - -@Injectable({ providedIn: 'root' }) -export class ProgrammingExerciseResolve implements Resolve { - private service = inject(ProgrammingExerciseService); - - resolve(route: ActivatedRouteSnapshot) { - const exerciseId = route.params['exerciseId'] ? route.params['exerciseId'] : undefined; - if (exerciseId) { - return this.service.find(exerciseId, true).pipe(map((programmingExercise: HttpResponse) => programmingExercise.body!)); - } - return of(new ProgrammingExercise(undefined, undefined)); - } -} +import { ProgrammingExerciseResolve } from 'app/exercises/programming/manage/programming-exercise-resolve.service'; export const routes: Routes = [ { - path: ':courseId/programming-exercises/new', + path: 'programming-exercises/new', loadComponent: () => import('app/exercises/programming/manage/update/programming-exercise-update.component').then((m) => m.ProgrammingExerciseUpdateComponent), resolve: { programmingExercise: ProgrammingExerciseResolve, @@ -39,7 +20,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/programming-exercises/:exerciseId/edit', + path: 'programming-exercises/:exerciseId/edit', loadComponent: () => import('app/exercises/programming/manage/update/programming-exercise-update.component').then((m) => m.ProgrammingExerciseUpdateComponent), resolve: { programmingExercise: ProgrammingExerciseResolve, @@ -51,7 +32,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/programming-exercises/import/:exerciseId', + path: 'programming-exercises/import/:exerciseId', loadComponent: () => import('app/exercises/programming/manage/update/programming-exercise-update.component').then((m) => m.ProgrammingExerciseUpdateComponent), resolve: { programmingExercise: ProgrammingExerciseResolve, @@ -63,7 +44,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/programming-exercises/import-from-file', + path: 'programming-exercises/import-from-file', loadComponent: () => import('app/exercises/programming/manage/update/programming-exercise-update.component').then((m) => m.ProgrammingExerciseUpdateComponent), resolve: { programmingExercise: ProgrammingExerciseResolve, @@ -75,7 +56,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/programming-exercises/:exerciseId', + path: 'programming-exercises/:exerciseId', loadComponent: () => import('app/exercises/programming/manage/programming-exercise-detail.component').then((m) => m.ProgrammingExerciseDetailComponent), resolve: { programmingExercise: ProgrammingExerciseResolve, @@ -87,7 +68,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/programming-exercises/:exerciseId/plagiarism', + path: 'programming-exercises/:exerciseId/plagiarism', loadComponent: () => import('app/exercises/shared/plagiarism/plagiarism-inspector/plagiarism-inspector.component').then((m) => m.PlagiarismInspectorComponent), resolve: { exercise: ProgrammingExerciseResolve, @@ -99,7 +80,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/programming-exercises/:exerciseId/grading/:tab', + path: 'programming-exercises/:exerciseId/grading/:tab', loadComponent: () => import('app/exercises/programming/manage/grading/programming-exercise-configure-grading.component').then((m) => m.ProgrammingExerciseConfigureGradingComponent), data: { @@ -109,11 +90,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/programming-exercises', - redirectTo: ':courseId/exercises', - }, - { - path: ':courseId/programming-exercises/:exerciseId/exercise-statistics', + path: 'programming-exercises/:exerciseId/exercise-statistics', loadComponent: () => import('app/exercises/shared/statistics/exercise-statistics.component').then((m) => m.ExerciseStatisticsComponent), resolve: { exercise: ProgrammingExerciseResolve, @@ -125,12 +102,12 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/programming-exercises/:exerciseId/iris-settings', + path: 'programming-exercises/:exerciseId/iris-settings', loadChildren: () => import('app/iris/settings/iris-exercise-settings-update/iris-exercise-settings-update-routing.module').then((m) => m.IrisExerciseSettingsUpdateRoutingModule), }, { - path: ':courseId/programming-exercises/:exerciseId/edit-build-plan', + path: 'programming-exercises/:exerciseId/edit-build-plan', loadComponent: () => import('app/exercises/programming/manage/build-plan-editor.component').then((m) => m.BuildPlanEditorComponent), resolve: { exercise: ProgrammingExerciseResolve, @@ -142,7 +119,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/programming-exercises/:exerciseId/repository/:repositoryType', + path: 'programming-exercises/:exerciseId/repository/:repositoryType', loadComponent: () => import('app/localvc/repository-view/repository-view.component').then((m) => m.RepositoryViewComponent), data: { authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], @@ -151,7 +128,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService, LocalVCGuard], }, { - path: ':courseId/programming-exercises/:exerciseId/repository/:repositoryType/repo/:repositoryId', + path: 'programming-exercises/:exerciseId/repository/:repositoryType/repo/:repositoryId', loadComponent: () => import('app/localvc/repository-view/repository-view.component').then((m) => m.RepositoryViewComponent), data: { authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], @@ -160,7 +137,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService, LocalVCGuard], }, { - path: ':courseId/programming-exercises/:exerciseId/repository/:repositoryType/commit-history', + path: 'programming-exercises/:exerciseId/repository/:repositoryType/commit-history', loadComponent: () => import('app/localvc/commit-history/commit-history.component').then((m) => m.CommitHistoryComponent), data: { authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR], @@ -169,7 +146,7 @@ export const routes: Routes = [ canActivate: [LocalVCGuard], }, { - path: ':courseId/programming-exercises/:exerciseId/repository/:repositoryType/repo/:repositoryId/commit-history', + path: 'programming-exercises/:exerciseId/repository/:repositoryType/repo/:repositoryId/commit-history', loadComponent: () => import('app/localvc/commit-history/commit-history.component').then((m) => m.CommitHistoryComponent), data: { authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR], @@ -178,7 +155,7 @@ export const routes: Routes = [ canActivate: [LocalVCGuard], }, { - path: ':courseId/programming-exercises/:exerciseId/repository/:repositoryType/vcs-access-log', + path: 'programming-exercises/:exerciseId/repository/:repositoryType/vcs-access-log', loadComponent: () => import('app/localvc/vcs-repository-access-log-view/vcs-repository-access-log-view.component').then((m) => m.VcsRepositoryAccessLogViewComponent), data: { authorities: [Authority.ADMIN, Authority.INSTRUCTOR], @@ -187,7 +164,7 @@ export const routes: Routes = [ canActivate: [LocalVCGuard], }, { - path: ':courseId/programming-exercises/:exerciseId/repository/:repositoryType/repo/:repositoryId/vcs-access-log', + path: 'programming-exercises/:exerciseId/repository/:repositoryType/repo/:repositoryId/vcs-access-log', loadComponent: () => import('app/localvc/vcs-repository-access-log-view/vcs-repository-access-log-view.component').then((m) => m.VcsRepositoryAccessLogViewComponent), data: { authorities: [Authority.ADMIN, Authority.INSTRUCTOR], @@ -196,7 +173,7 @@ export const routes: Routes = [ canActivate: [LocalVCGuard], }, { - path: ':courseId/programming-exercises/:exerciseId/repository/:repositoryType/commit-history/:commitHash', + path: 'programming-exercises/:exerciseId/repository/:repositoryType/commit-history/:commitHash', loadComponent: () => import('app/localvc/commit-details-view/commit-details-view.component').then((m) => m.CommitDetailsViewComponent), data: { authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR], @@ -205,7 +182,7 @@ export const routes: Routes = [ canActivate: [LocalVCGuard], }, { - path: ':courseId/programming-exercises/:exerciseId/participations/:participationId/repository', + path: 'programming-exercises/:exerciseId/participations/:participationId/repository', loadComponent: () => import('app/localvc/repository-view/repository-view.component').then((m) => m.RepositoryViewComponent), data: { authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], @@ -214,7 +191,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService, LocalVCGuard], }, { - path: ':courseId/programming-exercises/:exerciseId/participations/:participationId/repository/commit-history', + path: 'programming-exercises/:exerciseId/participations/:participationId/repository/commit-history', loadComponent: () => import('app/localvc/commit-history/commit-history.component').then((m) => m.CommitHistoryComponent), data: { authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], @@ -223,7 +200,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService, LocalVCGuard], }, { - path: ':courseId/programming-exercises/:exerciseId/participations/:participationId/repository/vcs-access-log', + path: 'programming-exercises/:exerciseId/participations/:participationId/repository/vcs-access-log', loadComponent: () => import('app/localvc/vcs-repository-access-log-view/vcs-repository-access-log-view.component').then((m) => m.VcsRepositoryAccessLogViewComponent), data: { authorities: [Authority.ADMIN, Authority.INSTRUCTOR], @@ -232,7 +209,7 @@ export const routes: Routes = [ canActivate: [UserRouteAccessService, LocalVCGuard], }, { - path: ':courseId/programming-exercises/:exerciseId/participations/:participationId/repository/commit-history/:commitHash', + path: 'programming-exercises/:exerciseId/participations/:participationId/repository/commit-history/:commitHash', loadComponent: () => import('app/localvc/commit-details-view/commit-details-view.component').then((m) => m.CommitDetailsViewComponent), data: { authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], @@ -240,10 +217,8 @@ export const routes: Routes = [ }, canActivate: [UserRouteAccessService, LocalVCGuard], }, + { + path: 'programming-exercises/:exerciseId/submissions/:submissionId', + loadChildren: () => import('app/exercises/programming/assess/programming-assessment.route').then((m) => m.routes), + }, ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule], -}) -export class ArtemisProgrammingExerciseManagementRoutingModule {} diff --git a/src/main/webapp/app/exercises/programming/manage/programming-exercise-resolve.service.ts b/src/main/webapp/app/exercises/programming/manage/programming-exercise-resolve.service.ts new file mode 100644 index 000000000000..144fde89d0b5 --- /dev/null +++ b/src/main/webapp/app/exercises/programming/manage/programming-exercise-resolve.service.ts @@ -0,0 +1,21 @@ +import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; +import { Injectable, inject } from '@angular/core'; + +import { ProgrammingExercise } from 'app/entities/programming/programming-exercise.model'; +import { ProgrammingExerciseService } from 'app/exercises/programming/manage/services/programming-exercise.service'; +import { map } from 'rxjs/operators'; +import { HttpResponse } from '@angular/common/http'; +import { of } from 'rxjs'; + +@Injectable({ providedIn: 'root' }) +export class ProgrammingExerciseResolve implements Resolve { + private service = inject(ProgrammingExerciseService); + + resolve(route: ActivatedRouteSnapshot) { + const exerciseId = route.params['exerciseId'] ? route.params['exerciseId'] : undefined; + if (exerciseId) { + return this.service.find(exerciseId, true).pipe(map((programmingExercise: HttpResponse) => programmingExercise.body!)); + } + return of(new ProgrammingExercise(undefined, undefined)); + } +} diff --git a/src/main/webapp/app/exercises/programming/manage/update/programming-exercise-update.module.ts b/src/main/webapp/app/exercises/programming/manage/update/programming-exercise-update.module.ts deleted file mode 100644 index 73e020887407..000000000000 --- a/src/main/webapp/app/exercises/programming/manage/update/programming-exercise-update.module.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ProgrammingExerciseUpdateComponent } from 'app/exercises/programming/manage/update/programming-exercise-update.component'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { ArtemisTeamConfigFormGroupModule } from 'app/exercises/shared/team-config-form-group/team-config-form-group.module'; -import { ArtemisDifficultyPickerModule } from 'app/exercises/shared/difficulty-picker/difficulty-picker.module'; -import { ArtemisPresentationScoreModule } from 'app/exercises/shared/presentation-score/presentation-score.module'; -import { ArtemisProgrammingExerciseInstructionsEditorModule } from 'app/exercises/programming/manage/instructions-editor/programming-exercise-instructions-editor.module'; -import { ArtemisMarkdownEditorModule } from 'app/shared/markdown-editor/markdown-editor.module'; -import { ArtemisCategorySelectorModule } from 'app/shared/category-selector/category-selector.module'; -import { StructuredGradingCriterionModule } from 'app/exercises/shared/structured-grading-criterion/structured-grading-criterion.module'; -import { ArtemisIncludedInOverallScorePickerModule } from 'app/exercises/shared/included-in-overall-score-picker/included-in-overall-score-picker.module'; -import { ArtemisProgrammingExerciseLifecycleModule } from 'app/exercises/programming/shared/lifecycle/programming-exercise-lifecycle.module'; -import { AddAuxiliaryRepositoryButtonComponent } from 'app/exercises/programming/manage/update/add-auxiliary-repository-button.component'; -import { NgxDatatableModule } from '@siemens/ngx-datatable'; -import { ArtemisTableModule } from 'app/shared/table/table.module'; -import { RemoveAuxiliaryRepositoryButtonComponent } from 'app/exercises/programming/manage/update/remove-auxiliary-repository-button.component'; -import { SubmissionPolicyUpdateModule } from 'app/exercises/shared/submission-policy/submission-policy-update.module'; -import { ProgrammingExerciseInformationComponent } from 'app/exercises/programming/manage/update/update-components/information/programming-exercise-information.component'; -import { ProgrammingExerciseModeComponent } from 'app/exercises/programming/manage/update/update-components/mode/programming-exercise-mode.component'; -import { ProgrammingExerciseLanguageComponent } from 'app/exercises/programming/manage/update/update-components/language/programming-exercise-language.component'; -import { ProgrammingExerciseGradingComponent } from 'app/exercises/programming/manage/update/update-components/grading/programming-exercise-grading.component'; -import { ProgrammingExerciseProblemComponent } from 'app/exercises/programming/manage/update/update-components/problem/programming-exercise-problem.component'; -import { ExerciseTitleChannelNameModule } from 'app/exercises/shared/exercise-title-channel-name/exercise-title-channel-name.module'; -import { ExerciseUpdateNotificationModule } from 'app/exercises/shared/exercise-update-notification/exercise-update-notification.module'; -import { ExerciseUpdatePlagiarismModule } from 'app/exercises/shared/plagiarism/exercise-update-plagiarism/exercise-update-plagiarism.module'; -import { ProgrammingExerciseCustomAeolusBuildPlanComponent } from 'app/exercises/programming/manage/update/update-components/custom-build-plans/programming-exercise-custom-aeolus-build-plan.component'; -import { ProgrammingExerciseCustomBuildPlanComponent } from 'app/exercises/programming/manage/update/update-components/custom-build-plans/programming-exercise-custom-build-plan.component'; -import { ProgrammingExerciseBuildConfigurationComponent } from 'app/exercises/programming/manage/update/update-components/custom-build-plans/programming-exercise-build-configuration/programming-exercise-build-configuration.component'; -import { ArtemisFormsModule } from 'app/forms/artemis-forms.module'; -import { ProgrammingExerciseBuildPlanCheckoutDirectoriesComponent } from 'app/exercises/programming/shared/build-details/programming-exercise-build-plan-checkout-directories.component'; -import { ProgrammingExerciseRepositoryAndBuildPlanDetailsComponent } from 'app/exercises/programming/shared/build-details/programming-exercise-repository-and-build-plan-details.component'; -import { ProgrammingExerciseTheiaComponent } from 'app/exercises/programming/manage/update/update-components/theia/programming-exercise-theia.component'; -import { MonacoEditorComponent } from 'app/shared/monaco-editor/monaco-editor.component'; -import { ProgrammingExerciseEditCheckoutDirectoriesComponent } from 'app/exercises/programming/shared/build-details/programming-exercise-edit-checkout-directories/programming-exercise-edit-checkout-directories.component'; -import { ProgrammingExerciseDifficultyComponent } from 'app/exercises/programming/manage/update/update-components/difficulty/programming-exercise-difficulty.component'; -import { SwitchEditModeButtonComponent } from 'app/exercises/programming/manage/update/switch-edit-mode-button/switch-edit-mode-button.component'; -import { TitleChannelNameModule } from 'app/shared/form/title-channel-name/title-channel-name.module'; -import { CustomNotIncludedInValidatorDirective } from 'app/shared/validators/custom-not-included-in-validator.directive'; - -@NgModule({ - imports: [ - ArtemisSharedModule, - ArtemisSharedComponentModule, - ArtemisTeamConfigFormGroupModule, - ArtemisIncludedInOverallScorePickerModule, - ArtemisDifficultyPickerModule, - ArtemisPresentationScoreModule, - ArtemisProgrammingExerciseInstructionsEditorModule, - ArtemisMarkdownEditorModule, - ArtemisCategorySelectorModule, - StructuredGradingCriterionModule, - ArtemisProgrammingExerciseLifecycleModule, - NgxDatatableModule, - ArtemisTableModule, - SubmissionPolicyUpdateModule, - ExerciseTitleChannelNameModule, - ExerciseUpdateNotificationModule, - ExerciseUpdatePlagiarismModule, - ArtemisFormsModule, - ProgrammingExerciseBuildPlanCheckoutDirectoriesComponent, - ProgrammingExerciseRepositoryAndBuildPlanDetailsComponent, - MonacoEditorComponent, - ProgrammingExerciseTheiaComponent, - ProgrammingExerciseEditCheckoutDirectoriesComponent, - ProgrammingExerciseDifficultyComponent, - SwitchEditModeButtonComponent, - TitleChannelNameModule, - CustomNotIncludedInValidatorDirective, - ProgrammingExerciseUpdateComponent, - ProgrammingExerciseInformationComponent, - ProgrammingExerciseModeComponent, - ProgrammingExerciseCustomAeolusBuildPlanComponent, - ProgrammingExerciseCustomBuildPlanComponent, - ProgrammingExerciseBuildConfigurationComponent, - ProgrammingExerciseLanguageComponent, - ProgrammingExerciseGradingComponent, - ProgrammingExerciseProblemComponent, - AddAuxiliaryRepositoryButtonComponent, - RemoveAuxiliaryRepositoryButtonComponent, - ], - exports: [ProgrammingExerciseUpdateComponent], -}) -export class ArtemisProgrammingExerciseUpdateModule {} diff --git a/src/main/webapp/app/exercises/programming/manage/update/update-components/difficulty/programming-exercise-difficulty.component.ts b/src/main/webapp/app/exercises/programming/manage/update/update-components/difficulty/programming-exercise-difficulty.component.ts index 472a24ccc647..747cb862c041 100644 --- a/src/main/webapp/app/exercises/programming/manage/update/update-components/difficulty/programming-exercise-difficulty.component.ts +++ b/src/main/webapp/app/exercises/programming/manage/update/update-components/difficulty/programming-exercise-difficulty.component.ts @@ -1,13 +1,13 @@ import { Component, input } from '@angular/core'; import { ProgrammingExercise } from 'app/entities/programming/programming-exercise.model'; -import { ArtemisDifficultyPickerModule } from 'app/exercises/shared/difficulty-picker/difficulty-picker.module'; import { TranslateDirective } from 'app/shared/language/translate.directive'; +import { DifficultyPickerComponent } from 'app/exercises/shared/difficulty-picker/difficulty-picker.component'; @Component({ selector: 'jhi-programming-exercise-difficulty', templateUrl: './programming-exercise-difficulty.component.html', styleUrls: ['../../../programming-exercise-form.scss'], - imports: [ArtemisDifficultyPickerModule, TranslateDirective], + imports: [TranslateDirective, DifficultyPickerComponent], }) export class ProgrammingExerciseDifficultyComponent { programmingExercise = input.required(); diff --git a/src/main/webapp/app/exercises/programming/participate/programming-participation.module.ts b/src/main/webapp/app/exercises/programming/participate/programming-participation.module.ts index a1c70f321c9e..89b3fadedf14 100644 --- a/src/main/webapp/app/exercises/programming/participate/programming-participation.module.ts +++ b/src/main/webapp/app/exercises/programming/participate/programming-participation.module.ts @@ -5,7 +5,6 @@ import { CodeEditorStudentContainerComponent } from 'app/exercises/programming/p import { ArtemisSharedModule } from 'app/shared/shared.module'; import { ArtemisProgrammingExerciseActionsModule } from 'app/exercises/programming/shared/actions/programming-exercise-actions.module'; import { ArtemisResultModule } from 'app/exercises/shared/result/result.module'; -import { ArtemisProgrammingAssessmentModule } from 'app/exercises/programming/assess/programming-assessment.module'; import { ArtemisHeaderExercisePageWithDetailsModule } from 'app/exercises/shared/exercise-headers/exercise-headers.module'; import { SubmissionResultStatusModule } from 'app/overview/submission-result-status.module'; import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; @@ -18,7 +17,6 @@ import { ArtemisProgrammingSubmissionPolicyStatusModule } from 'app/exercises/pr ArtemisCodeEditorModule, ArtemisProgrammingExerciseActionsModule, ArtemisResultModule, - ArtemisProgrammingAssessmentModule, ArtemisHeaderExercisePageWithDetailsModule, SubmissionResultStatusModule, ArtemisSharedComponentModule, diff --git a/src/main/webapp/app/exercises/programming/participate/programming-repository.module.ts b/src/main/webapp/app/exercises/programming/participate/programming-repository.module.ts index fd9df4229c33..adf573c2dc89 100644 --- a/src/main/webapp/app/exercises/programming/participate/programming-repository.module.ts +++ b/src/main/webapp/app/exercises/programming/participate/programming-repository.module.ts @@ -7,10 +7,6 @@ import { SubmissionResultStatusModule } from 'app/overview/submission-result-sta import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; import { RepositoryViewComponent } from 'app/localvc/repository-view/repository-view.component'; import { ArtemisProgrammingRepositoryRoutingModule } from 'app/exercises/programming/participate/programming-repository-routing.module'; -import { FormDateTimePickerModule } from 'app/shared/date-time-picker/date-time-picker.module'; -import { ArtemisAssessmentSharedModule } from 'app/assessment/assessment-shared.module'; -import { ArtemisProgrammingManualAssessmentModule } from 'app/exercises/programming/assess/programming-manual-assessment.module'; -import { AssessmentInstructionsModule } from 'app/assessment/assessment-instructions/assessment-instructions.module'; import { FormsModule } from '@angular/forms'; import { ArtemisProgrammingExerciseModule } from 'app/exercises/programming/shared/programming-exercise.module'; import { CommitHistoryComponent } from 'app/localvc/commit-history/commit-history.component'; @@ -23,15 +19,11 @@ import { ComplaintsForTutorComponent } from 'app/complaints/complaints-for-tutor imports: [ ArtemisSharedModule, ArtemisSharedComponentModule, - FormDateTimePickerModule, FormsModule, ComplaintsForTutorComponent, ArtemisProgrammingRepositoryRoutingModule, - ArtemisAssessmentSharedModule, ArtemisCodeEditorModule, ArtemisResultModule, - ArtemisProgrammingManualAssessmentModule, - AssessmentInstructionsModule, ArtemisHeaderExercisePageWithDetailsModule, SubmissionResultStatusModule, ArtemisProgrammingExerciseModule, diff --git a/src/main/webapp/app/exercises/programming/shared/code-editor/code-editor.module.ts b/src/main/webapp/app/exercises/programming/shared/code-editor/code-editor.module.ts index 9b42929ee85a..b044dbc73aab 100644 --- a/src/main/webapp/app/exercises/programming/shared/code-editor/code-editor.module.ts +++ b/src/main/webapp/app/exercises/programming/shared/code-editor/code-editor.module.ts @@ -6,7 +6,6 @@ import { CodeEditorFileBrowserFolderComponent } from 'app/exercises/programming/ import { CodeEditorFileBrowserDeleteComponent } from 'app/exercises/programming/shared/code-editor/file-browser/code-editor-file-browser-delete'; import { CodeEditorInstructionsComponent } from 'app/exercises/programming/shared/code-editor/instructions/code-editor-instructions.component'; import { CodeEditorResolveConflictModalComponent } from 'app/exercises/programming/shared/code-editor/actions/code-editor-resolve-conflict-modal.component'; -import { ArtemisProgrammingExerciseInstructionsEditorModule } from 'app/exercises/programming/manage/instructions-editor/programming-exercise-instructions-editor.module'; import { ArtemisSharedModule } from 'app/shared/shared.module'; import { CodeEditorRepositoryIsLockedComponent } from 'app/exercises/programming/shared/code-editor/layout/code-editor-repository-is-locked.component'; import { CodeEditorFileBrowserCreateNodeComponent } from 'app/exercises/programming/shared/code-editor/file-browser/code-editor-file-browser-create-node.component'; @@ -16,7 +15,6 @@ import { CodeEditorStatusComponent } from 'app/exercises/programming/shared/code import { CodeEditorConfirmRefreshModalComponent } from 'app/exercises/programming/shared/code-editor/actions/code-editor-confirm-refresh-modal.component'; import { CodeEditorContainerComponent } from 'app/exercises/programming/shared/code-editor/container/code-editor-container.component'; -import { ArtemisProgrammingManualAssessmentModule } from 'app/exercises/programming/assess/programming-manual-assessment.module'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { TreeviewModule } from 'app/exercises/programming/shared/code-editor/treeview/treeview.module'; import { CodeEditorFileBrowserBadgeComponent } from 'app/exercises/programming/shared/code-editor/file-browser/code-editor-file-browser-badge.component'; @@ -30,8 +28,6 @@ import { MonacoEditorComponent } from 'app/shared/monaco-editor/monaco-editor.co NgbModule, ArtemisSharedModule, TreeviewModule.forRoot(), - ArtemisProgrammingExerciseInstructionsEditorModule, - ArtemisProgrammingManualAssessmentModule, MonacoEditorComponent, ArtemisSharedComponentModule, RequestFeedbackButtonComponent, diff --git a/src/main/webapp/app/exercises/programming/shared/code-editor/monaco/code-editor-monaco.component.ts b/src/main/webapp/app/exercises/programming/shared/code-editor/monaco/code-editor-monaco.component.ts index 7008e55567f1..220028babe52 100644 --- a/src/main/webapp/app/exercises/programming/shared/code-editor/monaco/code-editor-monaco.component.ts +++ b/src/main/webapp/app/exercises/programming/shared/code-editor/monaco/code-editor-monaco.component.ts @@ -38,7 +38,6 @@ import { CodeEditorTutorAssessmentInlineFeedbackSuggestionComponent } from 'app/ import { MonacoEditorLineHighlight } from 'app/shared/monaco-editor/model/monaco-editor-line-highlight.model'; import { FileTypeService } from 'app/exercises/programming/shared/service/file-type.service'; import { EditorPosition } from 'app/shared/monaco-editor/model/actions/monaco-editor.util'; -import { ArtemisProgrammingManualAssessmentModule } from 'app/exercises/programming/assess/programming-manual-assessment.module'; import { CodeEditorHeaderComponent } from 'app/exercises/programming/shared/code-editor/header/code-editor-header.component'; import { ArtemisSharedModule } from 'app/shared/shared.module'; @@ -50,7 +49,13 @@ export type Annotation = { fileName: string; row: number; column: number; text: templateUrl: './code-editor-monaco.component.html', styleUrls: ['./code-editor-monaco.component.scss'], encapsulation: ViewEncapsulation.None, - imports: [ArtemisSharedModule, ArtemisProgrammingManualAssessmentModule, MonacoEditorComponent, CodeEditorHeaderComponent], + imports: [ + ArtemisSharedModule, + MonacoEditorComponent, + CodeEditorHeaderComponent, + CodeEditorTutorAssessmentInlineFeedbackSuggestionComponent, + CodeEditorTutorAssessmentInlineFeedbackComponent, + ], providers: [RepositoryFileService], changeDetection: ChangeDetectionStrategy.OnPush, }) diff --git a/src/main/webapp/app/exercises/programming/shared/programming-exercise.module.ts b/src/main/webapp/app/exercises/programming/shared/programming-exercise.module.ts index a9afe6cd545f..8d617f285289 100644 --- a/src/main/webapp/app/exercises/programming/shared/programming-exercise.module.ts +++ b/src/main/webapp/app/exercises/programming/shared/programming-exercise.module.ts @@ -5,10 +5,7 @@ import { OrionModule } from 'app/shared/orion/orion.module'; import { ArtemisSharedModule } from 'app/shared/shared.module'; import { RouterModule } from '@angular/router'; import { ArtemisProgrammingExerciseGradingModule } from 'app/exercises/programming/manage/grading/programming-exercise-grading.module'; - -import { ArtemisExerciseScoresModule } from 'app/exercises/shared/exercise-scores/exercise-scores.module'; import { OrionProgrammingExerciseComponent } from 'app/orion/management/orion-programming-exercise.component'; -import { ArtemisProgrammingAssessmentModule } from 'app/exercises/programming/assess/programming-assessment.module'; import { ExerciseCategoriesModule } from 'app/shared/exercise-categories/exercise-categories.module'; import { ProgrammingExerciseResetButtonDirective } from 'app/exercises/programming/manage/reset/programming-exercise-reset-button.directive'; import { ProgrammingExerciseResetDialogComponent } from 'app/exercises/programming/manage/reset/programming-exercise-reset-dialog.component'; @@ -25,8 +22,6 @@ import { CommitsInfoRowComponent } from 'app/exercises/programming/shared/commit OrionModule, ArtemisProgrammingExerciseStatusModule, ArtemisProgrammingExerciseGradingModule, - ArtemisExerciseScoresModule, - ArtemisProgrammingAssessmentModule, ExerciseCategoriesModule, SubmissionResultStatusModule, ProgrammingExerciseComponent, diff --git a/src/main/webapp/app/exercises/quiz/manage/quiz-management.module.ts b/src/main/webapp/app/exercises/quiz/manage/quiz-management.module.ts deleted file mode 100644 index a2cbf264690a..000000000000 --- a/src/main/webapp/app/exercises/quiz/manage/quiz-management.module.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { NgModule } from '@angular/core'; -import { MultipleChoiceQuestionEditComponent } from 'app/exercises/quiz/manage/multiple-choice-question/multiple-choice-question-edit.component'; -import { DragAndDropQuestionEditComponent } from 'app/exercises/quiz/manage/drag-and-drop-question/drag-and-drop-question-edit.component'; -import { ShortAnswerQuestionEditComponent } from 'app/exercises/quiz/manage/short-answer-question/short-answer-question-edit.component'; -import { ArtemisMarkdownEditorModule } from 'app/shared/markdown-editor/markdown-editor.module'; -import { DragDropModule } from '@angular/cdk/drag-drop'; -import { QuizScoringInfoModalComponent } from './quiz-scoring-info-modal/quiz-scoring-info-modal.component'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ArtemisQuizStatisticModule } from 'app/exercises/quiz/manage/statistics/quiz-statistic.module'; -import { ArtemisApollonDiagramsModule } from 'app/exercises/quiz/manage/apollon-diagrams/apollon-diagram.module'; -import { quizManagementRoute } from 'app/exercises/quiz/manage/quiz-management.route'; -import { QuizExerciseComponent } from 'app/exercises/quiz/manage/quiz-exercise.component'; -import { QuizExerciseUpdateComponent } from 'app/exercises/quiz/manage/quiz-exercise-update.component'; -import { RouterModule } from '@angular/router'; -import { FormDateTimePickerModule } from 'app/shared/date-time-picker/date-time-picker.module'; -import { ArtemisCategorySelectorModule } from 'app/shared/category-selector/category-selector.module'; -import { ArtemisDifficultyPickerModule } from 'app/exercises/shared/difficulty-picker/difficulty-picker.module'; -import { QuizReEvaluateComponent } from 'app/exercises/quiz/manage/re-evaluate/quiz-re-evaluate.component'; -import { ReEvaluateMultipleChoiceQuestionComponent } from 'app/exercises/quiz/manage/re-evaluate/multiple-choice-question/re-evaluate-multiple-choice-question.component'; -import { ReEvaluateDragAndDropQuestionComponent } from 'app/exercises/quiz/manage/re-evaluate/drag-and-drop-question/re-evaluate-drag-and-drop-question.component'; -import { ReEvaluateShortAnswerQuestionComponent } from 'app/exercises/quiz/manage/re-evaluate/short-answer-question/re-evaluate-short-answer-question.component'; -import { QuizReEvaluateWarningComponent } from 'app/exercises/quiz/manage/re-evaluate/quiz-re-evaluate-warning.component'; -import { QuizExerciseExportComponent } from 'app/exercises/quiz/manage/quiz-exercise-export.component'; -import { ArtemisQuizQuestionTypesModule } from 'app/exercises/quiz/shared/questions/artemis-quiz-question-types.module'; -import { ArtemisQuizParticipationModule } from 'app/exercises/quiz/participate/quiz-participation.module'; -import { QuizConfirmImportInvalidQuestionsModalComponent } from 'app/exercises/quiz/manage/quiz-confirm-import-invalid-questions-modal.component'; -import { ArtemisIncludedInOverallScorePickerModule } from 'app/exercises/shared/included-in-overall-score-picker/included-in-overall-score-picker.module'; -import { MatchPercentageInfoModalComponent } from 'app/exercises/quiz/manage/match-percentage-info-modal/match-percentage-info-modal.component'; -import { ArtemisMarkdownModule } from 'app/shared/markdown.module'; - -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { ExerciseCategoriesModule } from 'app/shared/exercise-categories/exercise-categories.module'; -import { QuizPoolMappingComponent } from 'app/exercises/quiz/manage/quiz-pool-mapping.component'; -import { QuizPoolMappingQuestionListComponent } from 'app/exercises/quiz/manage/quiz-pool-mapping-question-list.component'; -import { QuizPoolComponent } from 'app/exercises/quiz/manage/quiz-pool.component'; -import { QuizExerciseCreateButtonsComponent } from 'app/exercises/quiz/manage/quiz-exercise-create-buttons.component'; -import { QuizQuestionListEditComponent } from 'app/exercises/quiz/manage/quiz-question-list-edit.component'; -import { QuizQuestionListEditExistingComponent } from 'app/exercises/quiz/manage/quiz-question-list-edit-existing.component'; -import { ExerciseTitleChannelNameModule } from 'app/exercises/shared/exercise-title-channel-name/exercise-title-channel-name.module'; -import { QuizExerciseDetailComponent } from 'app/exercises/quiz/manage/quiz-exercise-detail.component'; -import { DetailModule } from 'app/detail-overview-list/detail.module'; -import { QuizExerciseManageButtonsComponent } from 'app/exercises/quiz/manage/quiz-exercise-manage-buttons.component'; -import { ArtemisExerciseModule } from 'app/exercises/shared/exercise/exercise.module'; - -const ENTITY_STATES = [...quizManagementRoute]; - -@NgModule({ - imports: [ - ArtemisSharedModule, - RouterModule.forChild(ENTITY_STATES), - DragDropModule, - FormDateTimePickerModule, - ArtemisQuizQuestionTypesModule, - ArtemisMarkdownEditorModule, - ArtemisQuizStatisticModule, - ArtemisApollonDiagramsModule, - ArtemisCategorySelectorModule, - ArtemisDifficultyPickerModule, - ArtemisIncludedInOverallScorePickerModule, - ArtemisQuizParticipationModule, - ArtemisMarkdownModule, - ArtemisSharedComponentModule, - ExerciseCategoriesModule, - ExerciseTitleChannelNameModule, - DetailModule, - ArtemisExerciseModule, - QuizExerciseManageButtonsComponent, - QuizExerciseComponent, - QuizExerciseCreateButtonsComponent, - QuizConfirmImportInvalidQuestionsModalComponent, - QuizExerciseUpdateComponent, - QuizExerciseDetailComponent, - MultipleChoiceQuestionEditComponent, - DragAndDropQuestionEditComponent, - QuizScoringInfoModalComponent, - ShortAnswerQuestionEditComponent, - QuizReEvaluateComponent, - ReEvaluateMultipleChoiceQuestionComponent, - ReEvaluateDragAndDropQuestionComponent, - ReEvaluateShortAnswerQuestionComponent, - QuizReEvaluateWarningComponent, - QuizExerciseExportComponent, - MatchPercentageInfoModalComponent, - QuizPoolMappingComponent, - QuizPoolMappingQuestionListComponent, - QuizPoolComponent, - QuizQuestionListEditComponent, - QuizQuestionListEditExistingComponent, - ], - exports: [QuizExerciseComponent, QuizExerciseCreateButtonsComponent], -}) -export class ArtemisQuizManagementModule {} diff --git a/src/main/webapp/app/exercises/quiz/manage/quiz-management.route.ts b/src/main/webapp/app/exercises/quiz/manage/quiz-management.route.ts index f80fb864a44b..c04b2260fd25 100644 --- a/src/main/webapp/app/exercises/quiz/manage/quiz-management.route.ts +++ b/src/main/webapp/app/exercises/quiz/manage/quiz-management.route.ts @@ -7,11 +7,7 @@ import { Authority } from 'app/shared/constants/authority.constants'; export const quizManagementRoute: Routes = [ { - path: ':courseId/quiz-exercises', - redirectTo: ':courseId/exercises', - }, - { - path: ':courseId/quiz-exercises/new', + path: 'quiz-exercises/new', loadComponent: () => import('./quiz-exercise-update.component').then((m) => m.QuizExerciseUpdateComponent), data: { authorities: [Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], @@ -21,7 +17,7 @@ export const quizManagementRoute: Routes = [ canDeactivate: [PendingChangesGuard], }, { - path: ':courseId/quiz-exercises/export', + path: 'quiz-exercises/export', loadComponent: () => import('./quiz-exercise-export.component').then((m) => m.QuizExerciseExportComponent), data: { authorities: [Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], @@ -30,7 +26,7 @@ export const quizManagementRoute: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/quiz-exercises/:exerciseId', + path: 'quiz-exercises/:exerciseId', loadComponent: () => import('app/exercises/quiz/manage/quiz-exercise-detail.component').then((m) => m.QuizExerciseDetailComponent), data: { authorities: [Authority.TA, Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], @@ -39,7 +35,7 @@ export const quizManagementRoute: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/quiz-exercises/:exerciseId/re-evaluate', + path: 'quiz-exercises/:exerciseId/re-evaluate', loadComponent: () => import('app/exercises/quiz/manage/re-evaluate/quiz-re-evaluate.component').then((m) => m.QuizReEvaluateComponent), data: { authorities: [Authority.INSTRUCTOR, Authority.ADMIN], @@ -48,7 +44,7 @@ export const quizManagementRoute: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/quiz-exercises/:exerciseId/edit', + path: 'quiz-exercises/:exerciseId/edit', loadComponent: () => import('./quiz-exercise-update.component').then((m) => m.QuizExerciseUpdateComponent), data: { authorities: [Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], @@ -58,7 +54,7 @@ export const quizManagementRoute: Routes = [ canDeactivate: [PendingChangesGuard], }, { - path: ':courseId/quiz-exercises/:exerciseId/import', + path: 'quiz-exercises/:exerciseId/import', loadComponent: () => import('./quiz-exercise-update.component').then((m) => m.QuizExerciseUpdateComponent), data: { authorities: [Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], @@ -68,7 +64,7 @@ export const quizManagementRoute: Routes = [ canDeactivate: [PendingChangesGuard], }, { - path: ':courseId/quiz-exercises/:exerciseId/preview', + path: 'quiz-exercises/:exerciseId/preview', loadComponent: () => import('app/exercises/quiz/participate/quiz-participation.component').then((m) => m.QuizParticipationComponent), data: { authorities: [Authority.TA, Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], @@ -78,7 +74,7 @@ export const quizManagementRoute: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/quiz-exercises/:exerciseId/solution', + path: 'quiz-exercises/:exerciseId/solution', loadComponent: () => import('app/exercises/quiz/participate/quiz-participation.component').then((m) => m.QuizParticipationComponent), data: { authorities: [Authority.TA, Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], diff --git a/src/main/webapp/app/exercises/shared/assessment-progress-label/assessment-progress-label.module.ts b/src/main/webapp/app/exercises/shared/assessment-progress-label/assessment-progress-label.module.ts deleted file mode 100644 index 8516a51d2e75..000000000000 --- a/src/main/webapp/app/exercises/shared/assessment-progress-label/assessment-progress-label.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { AssessmentProgressLabelComponent } from 'app/exercises/shared/assessment-progress-label/assessment-progress-label.component'; - -@NgModule({ - imports: [ArtemisSharedModule, AssessmentProgressLabelComponent], - exports: [AssessmentProgressLabelComponent], -}) -export class ArtemisAssessmentProgressLabelModule {} diff --git a/src/main/webapp/app/exercises/shared/dashboards/tutor/exercise-assessment-dashboard.module.ts b/src/main/webapp/app/exercises/shared/dashboards/tutor/exercise-assessment-dashboard.module.ts deleted file mode 100644 index b5e332db3500..000000000000 --- a/src/main/webapp/app/exercises/shared/dashboards/tutor/exercise-assessment-dashboard.module.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { exerciseAssessmentDashboardRoute } from './exercise-assessment-dashboard.route'; -import { ExerciseAssessmentDashboardComponent } from './exercise-assessment-dashboard.component'; -import { AssessmentInstructionsModule } from 'app/assessment/assessment-instructions/assessment-instructions.module'; -import { ArtemisTutorLeaderboardModule } from 'app/shared/dashboards/tutor-leaderboard/tutor-leaderboard.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { ArtemisProgrammingAssessmentModule } from 'app/exercises/programming/assess/programming-assessment.module'; -import { ArtemisAssessmentSharedModule } from 'app/assessment/assessment-shared.module'; -import { ArtemisHeaderExercisePageWithDetailsModule } from 'app/exercises/shared/exercise-headers/exercise-headers.module'; -import { ArtemisResultModule } from 'app/exercises/shared/result/result.module'; -import { ArtemisModelingEditorModule } from 'app/exercises/modeling/shared/modeling-editor.module'; -import { ArtemisTutorParticipationGraphModule } from 'app/shared/dashboards/tutor-participation-graph/tutor-participation-graph.module'; -import { ArtemisMarkdownModule } from 'app/shared/markdown.module'; -import { SecondCorrectionEnableButtonComponent } from 'app/exercises/shared/dashboards/tutor/second-correction-button/second-correction-enable-button.component'; -import { LanguageTableCellComponent } from 'app/exercises/shared/dashboards/tutor/language-table-cell/language-table-cell.component'; -import { OrionModule } from 'app/shared/orion/orion.module'; -import { OrionExerciseAssessmentDashboardComponent } from 'app/orion/assessment/orion-exercise-assessment-dashboard.component'; -import { PieChartModule } from '@swimlane/ngx-charts'; -import { SubmissionResultStatusModule } from 'app/overview/submission-result-status.module'; - -const ENTITY_STATES = [...exerciseAssessmentDashboardRoute]; - -@NgModule({ - imports: [ - ArtemisSharedModule, - ArtemisResultModule, - RouterModule.forChild(ENTITY_STATES), - ArtemisModelingEditorModule, - AssessmentInstructionsModule, - ArtemisHeaderExercisePageWithDetailsModule, - ArtemisTutorLeaderboardModule, - ArtemisSharedComponentModule, - ArtemisProgrammingAssessmentModule, - ArtemisAssessmentSharedModule, - ArtemisTutorParticipationGraphModule, - ArtemisMarkdownModule, - OrionModule, - SubmissionResultStatusModule, - PieChartModule, - ExerciseAssessmentDashboardComponent, - OrionExerciseAssessmentDashboardComponent, - SecondCorrectionEnableButtonComponent, - LanguageTableCellComponent, - ], - providers: [], - exports: [SecondCorrectionEnableButtonComponent, LanguageTableCellComponent], -}) -export class ArtemisExerciseAssessmentDashboardModule {} diff --git a/src/main/webapp/app/exercises/shared/dashboards/tutor/exercise-assessment-dashboard.route.ts b/src/main/webapp/app/exercises/shared/dashboards/tutor/exercise-assessment-dashboard.route.ts deleted file mode 100644 index 1af6290d10e5..000000000000 --- a/src/main/webapp/app/exercises/shared/dashboards/tutor/exercise-assessment-dashboard.route.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Routes } from '@angular/router'; -import { ExerciseAssessmentDashboardComponent } from './exercise-assessment-dashboard.component'; -import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; -import { Authority } from 'app/shared/constants/authority.constants'; -import { isOrion } from 'app/shared/orion/orion'; -import { OrionExerciseAssessmentDashboardComponent } from 'app/orion/assessment/orion-exercise-assessment-dashboard.component'; - -export const exerciseAssessmentDashboardRoute: Routes = [ - { - path: ':courseId/assessment-dashboard/:exerciseId', - component: !isOrion ? ExerciseAssessmentDashboardComponent : OrionExerciseAssessmentDashboardComponent, - data: { - authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], - pageTitle: 'artemisApp.exerciseAssessmentDashboard.home.title', - }, - canActivate: [UserRouteAccessService], - }, -]; diff --git a/src/main/webapp/app/exercises/shared/difficulty-picker/difficulty-picker.module.ts b/src/main/webapp/app/exercises/shared/difficulty-picker/difficulty-picker.module.ts deleted file mode 100644 index 68e2b7ba16aa..000000000000 --- a/src/main/webapp/app/exercises/shared/difficulty-picker/difficulty-picker.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { NgModule } from '@angular/core'; - -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { DifficultyPickerComponent } from 'app/exercises/shared/difficulty-picker/difficulty-picker.component'; - -@NgModule({ - imports: [ArtemisSharedModule, DifficultyPickerComponent], - exports: [DifficultyPickerComponent], -}) -export class ArtemisDifficultyPickerModule {} diff --git a/src/main/webapp/app/exercises/shared/example-submission/example-submissions.module.ts b/src/main/webapp/app/exercises/shared/example-submission/example-submissions.module.ts deleted file mode 100644 index 3c7c204d1417..000000000000 --- a/src/main/webapp/app/exercises/shared/example-submission/example-submissions.module.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ExampleSubmissionsComponent } from 'app/exercises/shared/example-submission/example-submissions.component'; -import { textExerciseRoute as textExerciseRoutes } from 'app/exercises/text/manage/text-exercise/text-exercise.route'; -import { routes as modelingExerciseRoutes } from 'app/exercises/modeling/manage/modeling-exercise.route'; -import { ExampleSubmissionImportComponent } from './example-submission-import/example-submission-import.component'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { ArtemisResultModule } from 'app/exercises/shared/result/result.module'; -import { SubmissionResultStatusModule } from 'app/overview/submission-result-status.module'; - -const ENTITY_STATES = [...textExerciseRoutes, ...modelingExerciseRoutes]; - -@NgModule({ - imports: [ - ArtemisSharedModule, - RouterModule.forChild(ENTITY_STATES), - ArtemisSharedComponentModule, - ArtemisResultModule, - SubmissionResultStatusModule, - ExampleSubmissionsComponent, - ExampleSubmissionImportComponent, - ], -}) -export class ExampleSubmissionsModule {} diff --git a/src/main/webapp/app/exercises/shared/exercise-detail-common-actions/non-programming-exercise-detail-common-actions.module.ts b/src/main/webapp/app/exercises/shared/exercise-detail-common-actions/non-programming-exercise-detail-common-actions.module.ts deleted file mode 100644 index feee6d25e7b8..000000000000 --- a/src/main/webapp/app/exercises/shared/exercise-detail-common-actions/non-programming-exercise-detail-common-actions.module.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { NgModule } from '@angular/core'; -import { NonProgrammingExerciseDetailCommonActionsComponent } from 'app/exercises/shared/exercise-detail-common-actions/non-programming-exercise-detail-common-actions.component'; -import { ArtemisSharedCommonModule } from 'app/shared/shared-common.module'; -import { ArtemisExerciseScoresModule } from 'app/exercises/shared/exercise-scores/exercise-scores.module'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { RouterModule } from '@angular/router'; -import { ArtemisAssessmentSharedModule } from 'app/assessment/assessment-shared.module'; - -@NgModule({ - exports: [NonProgrammingExerciseDetailCommonActionsComponent], - imports: [ - ArtemisSharedCommonModule, - ArtemisExerciseScoresModule, - ArtemisSharedModule, - RouterModule, - ArtemisAssessmentSharedModule, - NonProgrammingExerciseDetailCommonActionsComponent, - ], -}) -export class NonProgrammingExerciseDetailCommonActionsModule {} diff --git a/src/main/webapp/app/exercises/shared/exercise-scores/exercise-scores.module.ts b/src/main/webapp/app/exercises/shared/exercise-scores/exercise-scores.module.ts deleted file mode 100644 index 3175c9664bb6..000000000000 --- a/src/main/webapp/app/exercises/shared/exercise-scores/exercise-scores.module.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ManageAssessmentButtonsComponent } from 'app/exercises/shared/exercise-scores/manage-assessment-buttons.component'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ExerciseScoresComponent } from './exercise-scores.component'; -import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; -import { ArtemisProgrammingAssessmentModule } from 'app/exercises/programming/assess/programming-assessment.module'; -import { NgxDatatableModule } from '@siemens/ngx-datatable'; -import { ArtemisDataTableModule } from 'app/shared/data-table/data-table.module'; - -import { ArtemisResultModule } from 'app/exercises/shared/result/result.module'; -import { FormDateTimePickerModule } from 'app/shared/date-time-picker/date-time-picker.module'; -import { ArtemisExerciseScoresRoutingModule } from 'app/exercises/shared/exercise-scores/exercise-scores-routing.module'; -import { SubmissionExportButtonComponent } from 'app/exercises/shared/submission-export/submission-export-button.component'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { SubmissionExportDialogComponent } from 'app/exercises/shared/submission-export/submission-export-dialog.component'; -import { ExerciseScoresExportButtonComponent } from 'app/exercises/shared/exercise-scores/exercise-scores-export-button.component'; -import { SubmissionResultStatusModule } from 'app/overview/submission-result-status.module'; -import { ArtemisMarkdownModule } from 'app/shared/markdown.module'; -import { ExternalSubmissionDialogComponent } from 'app/exercises/shared/external-submission/external-submission-dialog.component'; -import { ExternalSubmissionButtonComponent } from 'app/exercises/shared/external-submission/external-submission-button.component'; - -@NgModule({ - imports: [ - ArtemisSharedModule, - ArtemisExerciseScoresRoutingModule, - NgbModule, - ArtemisResultModule, - FormDateTimePickerModule, - NgxDatatableModule, - ArtemisDataTableModule, - ArtemisProgrammingAssessmentModule, - ArtemisSharedComponentModule, - SubmissionResultStatusModule, - ArtemisMarkdownModule, - ExerciseScoresComponent, - SubmissionExportButtonComponent, - SubmissionExportDialogComponent, - ExerciseScoresExportButtonComponent, - ExternalSubmissionButtonComponent, - ExternalSubmissionDialogComponent, - ManageAssessmentButtonsComponent, - ], - exports: [SubmissionExportButtonComponent, ExerciseScoresExportButtonComponent, ExternalSubmissionButtonComponent], -}) -export class ArtemisExerciseScoresModule {} diff --git a/src/main/webapp/app/exercises/shared/exercise-scores/exercise-scores-routing.module.ts b/src/main/webapp/app/exercises/shared/exercise-scores/exercise-scores.route.ts similarity index 67% rename from src/main/webapp/app/exercises/shared/exercise-scores/exercise-scores-routing.module.ts rename to src/main/webapp/app/exercises/shared/exercise-scores/exercise-scores.route.ts index fd79da1cadc1..f0a3c479add2 100644 --- a/src/main/webapp/app/exercises/shared/exercise-scores/exercise-scores-routing.module.ts +++ b/src/main/webapp/app/exercises/shared/exercise-scores/exercise-scores.route.ts @@ -1,14 +1,13 @@ -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { ExerciseScoresComponent } from 'app/exercises/shared/exercise-scores/exercise-scores.component'; import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; -import { NgModule } from '@angular/core'; import { Authority } from 'app/shared/constants/authority.constants'; import { exerciseTypes } from 'app/entities/exercise.model'; -const routes: Routes = [ +export const routes: Routes = [ ...exerciseTypes.map((exerciseType) => { return { - path: ':courseId/' + exerciseType + '-exercises/:exerciseId/scores', + path: exerciseType + '-exercises/:exerciseId/scores', component: ExerciseScoresComponent, data: { authorities: [Authority.ADMIN, Authority.INSTRUCTOR, Authority.EDITOR, Authority.TA], @@ -18,9 +17,3 @@ const routes: Routes = [ }; }), ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule], -}) -export class ArtemisExerciseScoresRoutingModule {} diff --git a/src/main/webapp/app/exercises/shared/exercise-title-channel-name/exercise-title-channel-name.module.ts b/src/main/webapp/app/exercises/shared/exercise-title-channel-name/exercise-title-channel-name.module.ts deleted file mode 100644 index 625d0fd3b433..000000000000 --- a/src/main/webapp/app/exercises/shared/exercise-title-channel-name/exercise-title-channel-name.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ExerciseTitleChannelNameComponent } from './exercise-title-channel-name.component'; -import { TitleChannelNameModule } from 'app/shared/form/title-channel-name/title-channel-name.module'; - -@NgModule({ - imports: [TitleChannelNameModule, ExerciseTitleChannelNameComponent], - exports: [ExerciseTitleChannelNameComponent], -}) -export class ExerciseTitleChannelNameModule {} diff --git a/src/main/webapp/app/exercises/shared/manage/exercise-create-buttons.module.ts b/src/main/webapp/app/exercises/shared/manage/exercise-create-buttons.module.ts deleted file mode 100644 index 3b58d394f06f..000000000000 --- a/src/main/webapp/app/exercises/shared/manage/exercise-create-buttons.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ExerciseCreateButtonsComponent } from 'app/exercises/shared/manage/exercise-create-buttons.component'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ArtemisFileUploadExerciseManagementRoutingModule } from 'app/exercises/file-upload/manage/file-upload-exercise-management.route'; - -@NgModule({ - imports: [ArtemisSharedModule, ArtemisFileUploadExerciseManagementRoutingModule, ExerciseCreateButtonsComponent], - exports: [ExerciseCreateButtonsComponent], -}) -export class ArtemisExerciseCreateButtonsModule {} diff --git a/src/main/webapp/app/exercises/shared/participation/participation.module.ts b/src/main/webapp/app/exercises/shared/participation/participation.module.ts deleted file mode 100644 index 708b5c6dddb7..000000000000 --- a/src/main/webapp/app/exercises/shared/participation/participation.module.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ArtemisProgrammingExerciseActionsModule } from 'app/exercises/programming/shared/actions/programming-exercise-actions.module'; -import { ArtemisParticipationSubmissionModule } from 'app/exercises/shared/participation-submission/participation-submission.module'; -import { NgxDatatableModule } from '@siemens/ngx-datatable'; -import { ArtemisDataTableModule } from 'app/shared/data-table/data-table.module'; -import { ParticipationComponent } from 'app/exercises/shared/participation/participation.component'; -import { ArtemisExerciseScoresModule } from 'app/exercises/shared/exercise-scores/exercise-scores.module'; -import { ArtemisParticipationRoutingModule } from 'app/exercises/shared/participation/participation-routing.module'; -import { ArtemisTeamParticipeModule } from 'app/exercises/shared/team/team-participate/team-participate.module'; -import { FormDateTimePickerModule } from 'app/shared/date-time-picker/date-time-picker.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; - -@NgModule({ - imports: [ - ArtemisSharedModule, - ArtemisSharedComponentModule, - ArtemisParticipationRoutingModule, - ArtemisExerciseScoresModule, - ArtemisProgrammingExerciseActionsModule, - ArtemisParticipationSubmissionModule, - NgxDatatableModule, - ArtemisDataTableModule, - ArtemisTeamParticipeModule, - FormDateTimePickerModule, - ParticipationComponent, - ], -}) -export class ArtemisParticipationModule {} diff --git a/src/main/webapp/app/exercises/shared/participation/participation-routing.module.ts b/src/main/webapp/app/exercises/shared/participation/participation.route.ts similarity index 61% rename from src/main/webapp/app/exercises/shared/participation/participation-routing.module.ts rename to src/main/webapp/app/exercises/shared/participation/participation.route.ts index 063a2b2e4c7d..5c935389ed5f 100644 --- a/src/main/webapp/app/exercises/shared/participation/participation-routing.module.ts +++ b/src/main/webapp/app/exercises/shared/participation/participation.route.ts @@ -1,13 +1,12 @@ -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { ParticipationComponent } from 'app/exercises/shared/participation/participation.component'; import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; -import { NgModule } from '@angular/core'; import { Authority } from 'app/shared/constants/authority.constants'; import { exerciseTypes } from 'app/entities/exercise.model'; -const routes: Routes = exerciseTypes.map((exerciseType) => { +export const routes: Routes = exerciseTypes.map((exerciseType) => { return { - path: ':courseId/' + exerciseType + '-exercises/:exerciseId/participations', + path: exerciseType + '-exercises/:exerciseId/participations', component: ParticipationComponent, data: { authorities: [Authority.TA, Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], @@ -16,9 +15,3 @@ const routes: Routes = exerciseTypes.map((exerciseType) => { canActivate: [UserRouteAccessService], }; }); - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule], -}) -export class ArtemisParticipationRoutingModule {} diff --git a/src/main/webapp/app/exercises/shared/plagiarism/exercise-update-plagiarism/exercise-update-plagiarism.module.ts b/src/main/webapp/app/exercises/shared/plagiarism/exercise-update-plagiarism/exercise-update-plagiarism.module.ts deleted file mode 100644 index 5976b6a22c78..000000000000 --- a/src/main/webapp/app/exercises/shared/plagiarism/exercise-update-plagiarism/exercise-update-plagiarism.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisSharedCommonModule } from 'app/shared/shared-common.module'; -import { ExerciseUpdatePlagiarismComponent } from 'app/exercises/shared/plagiarism/exercise-update-plagiarism/exercise-update-plagiarism.component'; - -@NgModule({ - imports: [ArtemisSharedCommonModule, ExerciseUpdatePlagiarismComponent], - exports: [ExerciseUpdatePlagiarismComponent], -}) -export class ExerciseUpdatePlagiarismModule {} diff --git a/src/main/webapp/app/exercises/shared/presentation-score/presentation-score.module.ts b/src/main/webapp/app/exercises/shared/presentation-score/presentation-score.module.ts deleted file mode 100644 index 40e25fa58127..000000000000 --- a/src/main/webapp/app/exercises/shared/presentation-score/presentation-score.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { PresentationScoreComponent } from 'app/exercises/shared/presentation-score/presentation-score.component'; - -@NgModule({ - imports: [ArtemisSharedModule, PresentationScoreComponent], - exports: [PresentationScoreComponent], -}) -export class ArtemisPresentationScoreModule {} diff --git a/src/main/webapp/app/exercises/shared/team/team.module.ts b/src/main/webapp/app/exercises/shared/team/team.module.ts deleted file mode 100644 index 6c2edf1bbefd..000000000000 --- a/src/main/webapp/app/exercises/shared/team/team.module.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; -import { NgxDatatableModule } from '@siemens/ngx-datatable'; -import { TeamsComponent } from 'app/exercises/shared/team/teams.component'; -import { teamRoute } from 'app/exercises/shared/team/team.route'; -import { ArtemisDataTableModule } from 'app/shared/data-table/data-table.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { TeamUpdateButtonComponent } from 'app/exercises/shared/team/team-update-dialog/team-update-button.component'; -import { TeamUpdateDialogComponent } from 'app/exercises/shared/team/team-update-dialog/team-update-dialog.component'; -import { TeamStudentSearchComponent } from 'app/exercises/shared/team/team-student-search/team-student-search.component'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { TeamComponent } from 'app/exercises/shared/team/team.component'; -import { TeamDeleteButtonComponent } from 'app/exercises/shared/team/team-update-dialog/team-delete-button.component'; -import { TeamOwnerSearchComponent } from 'app/exercises/shared/team/team-owner-search/team-owner-search.component'; -import { TeamsImportButtonComponent } from 'app/exercises/shared/team/teams-import-dialog/teams-import-button.component'; -import { TeamsImportDialogComponent } from 'app/exercises/shared/team/teams-import-dialog/teams-import-dialog.component'; -import { TeamExerciseSearchComponent } from 'app/exercises/shared/team/team-exercise-search/team-exercise-search.component'; -import { TeamParticipationTableComponent } from 'app/exercises/shared/team/team-participation-table/team-participation-table.component'; -import { ArtemisResultModule } from 'app/exercises/shared/result/result.module'; -import { TeamsImportFromFileFormComponent } from './teams-import-dialog/teams-import-from-file-form.component'; -import { TeamsExportButtonComponent } from 'app/exercises/shared/team/teams-import-dialog/teams-export-button.component'; -import { ArtemisTeamParticipeModule } from 'app/exercises/shared/team/team-participate/team-participate.module'; - -@NgModule({ - imports: [ - RouterModule.forChild(teamRoute), - ArtemisSharedModule, - NgxDatatableModule, - ArtemisDataTableModule, - ArtemisSharedComponentModule, - ArtemisResultModule, - ArtemisTeamParticipeModule, - TeamsComponent, - TeamUpdateButtonComponent, - TeamUpdateDialogComponent, - TeamsImportButtonComponent, - TeamsExportButtonComponent, - TeamsImportDialogComponent, - TeamDeleteButtonComponent, - TeamStudentSearchComponent, - TeamOwnerSearchComponent, - TeamExerciseSearchComponent, - TeamParticipationTableComponent, - TeamComponent, - TeamsImportFromFileFormComponent, - ], - exports: [TeamUpdateButtonComponent, TeamsImportButtonComponent, TeamsExportButtonComponent], -}) -export class ArtemisTeamModule {} diff --git a/src/main/webapp/app/exercises/text/assess/text-submission-assessment-resolve.service.ts b/src/main/webapp/app/exercises/text/assess/text-submission-assessment-resolve.service.ts new file mode 100644 index 000000000000..8434c17446c0 --- /dev/null +++ b/src/main/webapp/app/exercises/text/assess/text-submission-assessment-resolve.service.ts @@ -0,0 +1,52 @@ +import { Injectable, inject } from '@angular/core'; +import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; +import { TextSubmission } from 'app/entities/text/text-submission.model'; +import { of } from 'rxjs'; + +import { StudentParticipation } from 'app/entities/participation/student-participation.model'; +import { TextAssessmentService } from 'app/exercises/text/assess/text-assessment.service'; +import { TextSubmissionService } from 'app/exercises/text/participate/text-submission.service'; +import { catchError, map } from 'rxjs/operators'; + +@Injectable({ providedIn: 'root' }) +export class NewStudentParticipationResolver implements Resolve { + private textSubmissionService = inject(TextSubmissionService); + + /** + * Resolves the needed StudentParticipations for the TextSubmissionAssessmentComponent using the TextAssessmentService. + * @param route + */ + resolve(route: ActivatedRouteSnapshot) { + const exerciseId = Number(route.paramMap.get('exerciseId')); + const correctionRound = Number(route.queryParamMap.get('correction-round')); + if (exerciseId) { + return this.textSubmissionService + .getSubmissionWithoutAssessment(exerciseId, 'lock', correctionRound) + .pipe(map((submission?: TextSubmission) => submission?.participation)) + .pipe(catchError(() => of(undefined))); + } + return of(undefined); + } +} + +@Injectable({ providedIn: 'root' }) +export class StudentParticipationResolver implements Resolve { + private textAssessmentService = inject(TextAssessmentService); + + /** + * Resolves the needed StudentParticipations for the TextSubmissionAssessmentComponent using the TextAssessmentService. + * @param route + */ + resolve(route: ActivatedRouteSnapshot) { + const submissionId = Number(route.paramMap.get('submissionId')); + const correctionRound = Number(route.queryParamMap.get('correction-round')); + const resultId = Number(route.paramMap.get('resultId')); + if (resultId) { + return this.textAssessmentService.getFeedbackDataForExerciseSubmission(submissionId, undefined, resultId).pipe(catchError(() => of(undefined))); + } + if (submissionId) { + return this.textAssessmentService.getFeedbackDataForExerciseSubmission(submissionId, correctionRound).pipe(catchError(() => of(undefined))); + } + return of(undefined); + } +} diff --git a/src/main/webapp/app/exercises/text/assess/text-submission-assessment.module.ts b/src/main/webapp/app/exercises/text/assess/text-submission-assessment.module.ts deleted file mode 100644 index 3a1c39cc5357..000000000000 --- a/src/main/webapp/app/exercises/text/assess/text-submission-assessment.module.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { RouterModule } from '@angular/router'; - -import { ArtemisAssessmentSharedModule } from 'app/assessment/assessment-shared.module'; -import { textSubmissionAssessmentRoutes } from './text-submission-assessment.route'; -import { TextSubmissionAssessmentComponent } from './text-submission-assessment.component'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { AssessmentInstructionsModule } from 'app/assessment/assessment-instructions/assessment-instructions.module'; -import { TextAssessmentAreaComponent } from './text-assessment-area/text-assessment-area.component'; -import { TextblockAssessmentCardComponent } from './textblock-assessment-card/textblock-assessment-card.component'; -import { TextblockFeedbackEditorComponent } from 'app/exercises/text/assess/textblock-feedback-editor/textblock-feedback-editor.component'; -import { ManualTextblockSelectionComponent } from 'app/exercises/text/assess/manual-textblock-selection/manual-textblock-selection.component'; -import { ArtemisConfirmIconModule } from 'app/shared/confirm-icon/confirm-icon.module'; - -import { ArtemisResultModule } from 'app/exercises/shared/result/result.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { ArtemisGradingInstructionLinkIconModule } from 'app/shared/grading-instruction-link-icon/grading-instruction-link-icon.module'; -import { SubmissionResultStatusModule } from 'app/overview/submission-result-status.module'; -import { TextblockFeedbackDropdownComponent } from 'app/exercises/text/assess/textblock-feedback-editor/dropdown/textblock-feedback-dropdown.component'; -import { ArtemisAssessmentProgressLabelModule } from 'app/exercises/shared/assessment-progress-label/assessment-progress-label.module'; -import { ArtemisFeedbackModule } from 'app/exercises/shared/feedback/feedback.module'; -import { ComplaintsForTutorComponent } from 'app/complaints/complaints-for-tutor/complaints-for-tutor.component'; - -const ENTITY_STATES = [...textSubmissionAssessmentRoutes]; - -@NgModule({ - imports: [ - CommonModule, - RouterModule.forChild(ENTITY_STATES), - ArtemisSharedModule, - ArtemisResultModule, - ComplaintsForTutorComponent, - ArtemisSharedComponentModule, - ArtemisAssessmentSharedModule, - AssessmentInstructionsModule, - ArtemisConfirmIconModule, - ArtemisGradingInstructionLinkIconModule, - SubmissionResultStatusModule, - ArtemisAssessmentProgressLabelModule, - ArtemisFeedbackModule, - TextSubmissionAssessmentComponent, - TextAssessmentAreaComponent, - TextblockAssessmentCardComponent, - TextblockFeedbackEditorComponent, - ManualTextblockSelectionComponent, - TextblockFeedbackDropdownComponent, - ], - exports: [TextAssessmentAreaComponent], -}) -export class ArtemisTextSubmissionAssessmentModule {} diff --git a/src/main/webapp/app/exercises/text/assess/text-submission-assessment.route.ts b/src/main/webapp/app/exercises/text/assess/text-submission-assessment.route.ts index c1ba340266f5..233c00284fcb 100644 --- a/src/main/webapp/app/exercises/text/assess/text-submission-assessment.route.ts +++ b/src/main/webapp/app/exercises/text/assess/text-submission-assessment.route.ts @@ -1,60 +1,19 @@ -import { Injectable, inject } from '@angular/core'; -import { ActivatedRouteSnapshot, Resolve, Routes } from '@angular/router'; -import { TextSubmission } from 'app/entities/text/text-submission.model'; -import { of } from 'rxjs'; +import { Routes } from '@angular/router'; import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; - -import { StudentParticipation } from 'app/entities/participation/student-participation.model'; -import { TextAssessmentService } from 'app/exercises/text/assess/text-assessment.service'; -import { TextSubmissionService } from 'app/exercises/text/participate/text-submission.service'; import { Authority } from 'app/shared/constants/authority.constants'; -import { catchError, map } from 'rxjs/operators'; - -@Injectable({ providedIn: 'root' }) -export class NewStudentParticipationResolver implements Resolve { - private textSubmissionService = inject(TextSubmissionService); - - /** - * Resolves the needed StudentParticipations for the TextSubmissionAssessmentComponent using the TextAssessmentService. - * @param route - */ - resolve(route: ActivatedRouteSnapshot) { - const exerciseId = Number(route.paramMap.get('exerciseId')); - const correctionRound = Number(route.queryParamMap.get('correction-round')); - if (exerciseId) { - return this.textSubmissionService - .getSubmissionWithoutAssessment(exerciseId, 'lock', correctionRound) - .pipe(map((submission?: TextSubmission) => submission?.participation)) - .pipe(catchError(() => of(undefined))); - } - return of(undefined); - } -} - -@Injectable({ providedIn: 'root' }) -export class StudentParticipationResolver implements Resolve { - private textAssessmentService = inject(TextAssessmentService); - - /** - * Resolves the needed StudentParticipations for the TextSubmissionAssessmentComponent using the TextAssessmentService. - * @param route - */ - resolve(route: ActivatedRouteSnapshot) { - const submissionId = Number(route.paramMap.get('submissionId')); - const correctionRound = Number(route.queryParamMap.get('correction-round')); - const resultId = Number(route.paramMap.get('resultId')); - if (resultId) { - return this.textAssessmentService.getFeedbackDataForExerciseSubmission(submissionId, undefined, resultId).pipe(catchError(() => of(undefined))); - } - if (submissionId) { - return this.textAssessmentService.getFeedbackDataForExerciseSubmission(submissionId, correctionRound).pipe(catchError(() => of(undefined))); - } - return of(undefined); - } -} +import { NewStudentParticipationResolver, StudentParticipationResolver } from 'app/exercises/text/assess/text-submission-assessment-resolve.service'; export const NEW_ASSESSMENT_PATH = 'submissions/new/assessment'; export const textSubmissionAssessmentRoutes: Routes = [ + { + path: '', + loadComponent: () => import('app/exercises/text/manage/text-exercise/text-exercise-detail.component').then((m) => m.TextExerciseDetailComponent), + data: { + authorities: [Authority.TA, Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], + pageTitle: 'artemisApp.textExercise.home.title', + }, + canActivate: [UserRouteAccessService], + }, { path: NEW_ASSESSMENT_PATH, loadComponent: () => import('./text-submission-assessment.component').then((m) => m.TextSubmissionAssessmentComponent), diff --git a/src/main/webapp/app/exercises/text/manage/example-text-submission/example-text-submission.module.ts b/src/main/webapp/app/exercises/text/manage/example-text-submission/example-text-submission.module.ts deleted file mode 100644 index c1d42c6ace5c..000000000000 --- a/src/main/webapp/app/exercises/text/manage/example-text-submission/example-text-submission.module.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; -import { exampleTextSubmissionRoute } from 'app/exercises/text/manage/example-text-submission/example-text-submission.route'; -import { ExampleTextSubmissionComponent } from 'app/exercises/text/manage/example-text-submission/example-text-submission.component'; -import { ArtemisAssessmentSharedModule } from 'app/assessment/assessment-shared.module'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ArtemisResultModule } from 'app/exercises/shared/result/result.module'; -import { ArtemisTextSubmissionAssessmentModule } from 'app/exercises/text/assess/text-submission-assessment.module'; -import { ResizableInstructionsComponent } from 'app/exercises/text/manage/example-text-submission/resizable-instructions/resizable-instructions.component'; -import { AssessmentInstructionsModule } from 'app/assessment/assessment-instructions/assessment-instructions.module'; -import { ArtemisMarkdownModule } from 'app/shared/markdown.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; - -const ENTITY_STATES = [...exampleTextSubmissionRoute]; - -@NgModule({ - imports: [ - ArtemisSharedModule, - ArtemisResultModule, - RouterModule.forChild(ENTITY_STATES), - ArtemisTextSubmissionAssessmentModule, - ArtemisAssessmentSharedModule, - AssessmentInstructionsModule, - ArtemisMarkdownModule, - ArtemisSharedComponentModule, - ExampleTextSubmissionComponent, - ResizableInstructionsComponent, - ], -}) -export class ArtemisExampleTextSubmissionModule {} diff --git a/src/main/webapp/app/exercises/text/manage/text-exercise-management.module.ts b/src/main/webapp/app/exercises/text/manage/text-exercise-management.module.ts deleted file mode 100644 index c99bb35533be..000000000000 --- a/src/main/webapp/app/exercises/text/manage/text-exercise-management.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisTextExerciseModule } from 'app/exercises/text/manage/text-exercise/text-exercise.module'; - -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; - -@NgModule({ - imports: [ArtemisTextExerciseModule, ArtemisSharedComponentModule, ArtemisSharedModule], -}) -export class ArtemisTextExerciseManagementModule {} diff --git a/src/main/webapp/app/exercises/text/manage/text-exercise/text-exercise-resolver.service.ts b/src/main/webapp/app/exercises/text/manage/text-exercise/text-exercise-resolver.service.ts new file mode 100644 index 000000000000..fb8d270a858a --- /dev/null +++ b/src/main/webapp/app/exercises/text/manage/text-exercise/text-exercise-resolver.service.ts @@ -0,0 +1,45 @@ +import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; + +import { TextExercise } from 'app/entities/text/text-exercise.model'; +import { Injectable, inject } from '@angular/core'; +import { TextExerciseService } from 'app/exercises/text/manage/text-exercise/text-exercise.service'; +import { CourseManagementService } from 'app/course/manage/course-management.service'; +import { of } from 'rxjs'; +import { HttpResponse } from '@angular/common/http'; +import { filter, map } from 'rxjs/operators'; +import { Course } from 'app/entities/course.model'; +import { ExerciseGroup } from 'app/entities/exercise-group.model'; +import { ExerciseGroupService } from 'app/exam/manage/exercise-groups/exercise-group.service'; + +@Injectable({ providedIn: 'root' }) +export class TextExerciseResolver implements Resolve { + private textExerciseService = inject(TextExerciseService); + private courseService = inject(CourseManagementService); + private exerciseGroupService = inject(ExerciseGroupService); + + /** + * Resolves the route and initializes text exercise + * @param route + */ + resolve(route: ActivatedRouteSnapshot) { + if (route.params['exerciseId']) { + return this.textExerciseService.find(route.params['exerciseId'], true).pipe( + filter((res) => !!res.body), + map((textExercise: HttpResponse) => textExercise.body!), + ); + } else if (route.params['courseId']) { + if (route.params['examId'] && route.params['exerciseGroupId']) { + return this.exerciseGroupService.find(route.params['courseId'], route.params['examId'], route.params['exerciseGroupId']).pipe( + filter((res) => !!res.body), + map((exerciseGroup: HttpResponse) => new TextExercise(undefined, exerciseGroup.body || undefined)), + ); + } else { + return this.courseService.find(route.params['courseId']).pipe( + filter((res) => !!res.body), + map((course: HttpResponse) => new TextExercise(course.body || undefined, undefined)), + ); + } + } + return of(new TextExercise(undefined, undefined)); + } +} diff --git a/src/main/webapp/app/exercises/text/manage/text-exercise/text-exercise.module.ts b/src/main/webapp/app/exercises/text/manage/text-exercise/text-exercise.module.ts deleted file mode 100644 index 1ac2358a03b0..000000000000 --- a/src/main/webapp/app/exercises/text/manage/text-exercise/text-exercise.module.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { FormDateTimePickerModule } from 'app/shared/date-time-picker/date-time-picker.module'; -import { ArtemisCategorySelectorModule } from 'app/shared/category-selector/category-selector.module'; -import { ArtemisDifficultyPickerModule } from 'app/exercises/shared/difficulty-picker/difficulty-picker.module'; -import { ArtemisPresentationScoreModule } from 'app/exercises/shared/presentation-score/presentation-score.module'; -import { ArtemisAssessmentSharedModule } from 'app/assessment/assessment-shared.module'; -import { ArtemisMarkdownEditorModule } from 'app/shared/markdown-editor/markdown-editor.module'; -import { TextExerciseUpdateComponent } from 'app/exercises/text/manage/text-exercise/text-exercise-update.component'; -import { textExerciseRoute } from 'app/exercises/text/manage/text-exercise/text-exercise.route'; -import { TextExerciseComponent } from 'app/exercises/text/manage/text-exercise/text-exercise.component'; -import { TextExerciseDetailComponent } from 'app/exercises/text/manage/text-exercise/text-exercise-detail.component'; -import { ArtemisTeamConfigFormGroupModule } from 'app/exercises/shared/team-config-form-group/team-config-form-group.module'; -import { StructuredGradingCriterionModule } from 'app/exercises/shared/structured-grading-criterion/structured-grading-criterion.module'; -import { AssessmentInstructionsModule } from 'app/assessment/assessment-instructions/assessment-instructions.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { TextExerciseRowButtonsComponent } from 'app/exercises/text/manage/text-exercise/text-exercise-row-buttons.component'; -import { ArtemisIncludedInOverallScorePickerModule } from 'app/exercises/shared/included-in-overall-score-picker/included-in-overall-score-picker.module'; -import { ArtemisMarkdownModule } from 'app/shared/markdown.module'; -import { NonProgrammingExerciseDetailCommonActionsModule } from 'app/exercises/shared/exercise-detail-common-actions/non-programming-exercise-detail-common-actions.module'; -import { ArtemisExerciseUpdateWarningModule } from 'app/exercises/shared/exercise-update-warning/exercise-update-warning.module'; -import { ExampleSubmissionsModule } from 'app/exercises/shared/example-submission/example-submissions.module'; -import { ExerciseCategoriesModule } from 'app/shared/exercise-categories/exercise-categories.module'; -import { ExerciseTitleChannelNameModule } from 'app/exercises/shared/exercise-title-channel-name/exercise-title-channel-name.module'; -import { ExerciseUpdateNotificationModule } from 'app/exercises/shared/exercise-update-notification/exercise-update-notification.module'; -import { ExerciseUpdatePlagiarismModule } from 'app/exercises/shared/plagiarism/exercise-update-plagiarism/exercise-update-plagiarism.module'; -import { ExerciseFeedbackSuggestionOptionsModule } from 'app/exercises/shared/feedback-suggestion/exercise-feedback-suggestion-options.module'; -import { DetailModule } from 'app/detail-overview-list/detail.module'; -import { ArtemisExerciseModule } from 'app/exercises/shared/exercise/exercise.module'; -import { ArtemisFormsModule } from 'app/forms/artemis-forms.module'; - -const ENTITY_STATES = [...textExerciseRoute]; - -@NgModule({ - imports: [ - ArtemisSharedModule, - RouterModule.forChild(ENTITY_STATES), - FormDateTimePickerModule, - ArtemisCategorySelectorModule, - ArtemisDifficultyPickerModule, - ArtemisIncludedInOverallScorePickerModule, - ArtemisMarkdownEditorModule, - ArtemisPresentationScoreModule, - ArtemisAssessmentSharedModule, - ArtemisTeamConfigFormGroupModule, - StructuredGradingCriterionModule, - AssessmentInstructionsModule, - ArtemisSharedComponentModule, - ArtemisMarkdownModule, - NonProgrammingExerciseDetailCommonActionsModule, - ArtemisExerciseUpdateWarningModule, - ExampleSubmissionsModule, - ArtemisExerciseModule, - ExerciseCategoriesModule, - ExerciseTitleChannelNameModule, - ExerciseUpdateNotificationModule, - ExerciseUpdatePlagiarismModule, - ExerciseFeedbackSuggestionOptionsModule, - DetailModule, - ArtemisFormsModule, - TextExerciseComponent, - TextExerciseDetailComponent, - TextExerciseUpdateComponent, - TextExerciseRowButtonsComponent, - ], - exports: [TextExerciseComponent], -}) -export class ArtemisTextExerciseModule {} diff --git a/src/main/webapp/app/exercises/text/manage/text-exercise/text-exercise.route.ts b/src/main/webapp/app/exercises/text/manage/text-exercise/text-exercise.route.ts index 01f625ccc4d0..1d478687f1ce 100644 --- a/src/main/webapp/app/exercises/text/manage/text-exercise/text-exercise.route.ts +++ b/src/main/webapp/app/exercises/text/manage/text-exercise/text-exercise.route.ts @@ -1,54 +1,11 @@ -import { ActivatedRouteSnapshot, Resolve, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; - -import { TextExercise } from 'app/entities/text/text-exercise.model'; -import { Injectable, inject } from '@angular/core'; -import { TextExerciseService } from 'app/exercises/text/manage/text-exercise/text-exercise.service'; -import { CourseManagementService } from 'app/course/manage/course-management.service'; -import { of } from 'rxjs'; -import { HttpResponse } from '@angular/common/http'; -import { filter, map } from 'rxjs/operators'; -import { Course } from 'app/entities/course.model'; -import { ExerciseGroup } from 'app/entities/exercise-group.model'; -import { ExerciseGroupService } from 'app/exam/manage/exercise-groups/exercise-group.service'; import { Authority } from 'app/shared/constants/authority.constants'; - -@Injectable({ providedIn: 'root' }) -export class TextExerciseResolver implements Resolve { - private textExerciseService = inject(TextExerciseService); - private courseService = inject(CourseManagementService); - private exerciseGroupService = inject(ExerciseGroupService); - - /** - * Resolves the route and initializes text exercise - * @param route - */ - resolve(route: ActivatedRouteSnapshot) { - if (route.params['exerciseId']) { - return this.textExerciseService.find(route.params['exerciseId'], true).pipe( - filter((res) => !!res.body), - map((textExercise: HttpResponse) => textExercise.body!), - ); - } else if (route.params['courseId']) { - if (route.params['examId'] && route.params['exerciseGroupId']) { - return this.exerciseGroupService.find(route.params['courseId'], route.params['examId'], route.params['exerciseGroupId']).pipe( - filter((res) => !!res.body), - map((exerciseGroup: HttpResponse) => new TextExercise(undefined, exerciseGroup.body || undefined)), - ); - } else { - return this.courseService.find(route.params['courseId']).pipe( - filter((res) => !!res.body), - map((course: HttpResponse) => new TextExercise(course.body || undefined, undefined)), - ); - } - } - return of(new TextExercise(undefined, undefined)); - } -} +import { TextExerciseResolver } from 'app/exercises/text/manage/text-exercise/text-exercise-resolver.service'; export const textExerciseRoute: Routes = [ { - path: ':courseId/text-exercises/new', + path: 'text-exercises/new', loadComponent: () => import('./text-exercise-update.component').then((m) => m.TextExerciseUpdateComponent), resolve: { textExercise: TextExerciseResolver, @@ -60,16 +17,11 @@ export const textExerciseRoute: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/text-exercises/:exerciseId', - loadComponent: () => import('./text-exercise-detail.component').then((m) => m.TextExerciseDetailComponent), - data: { - authorities: [Authority.TA, Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], - pageTitle: 'artemisApp.textExercise.home.title', - }, - canActivate: [UserRouteAccessService], + path: 'text-exercises/:exerciseId', + loadChildren: () => import('app/exercises/text/assess/text-submission-assessment.route').then((m) => m.textSubmissionAssessmentRoutes), }, { - path: ':courseId/text-exercises/:exerciseId/edit', + path: 'text-exercises/:exerciseId/edit', loadComponent: () => import('./text-exercise-update.component').then((m) => m.TextExerciseUpdateComponent), resolve: { textExercise: TextExerciseResolver, @@ -81,7 +33,7 @@ export const textExerciseRoute: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/text-exercises/:exerciseId/import', + path: 'text-exercises/:exerciseId/import', loadComponent: () => import('./text-exercise-update.component').then((m) => m.TextExerciseUpdateComponent), resolve: { textExercise: TextExerciseResolver, @@ -93,7 +45,7 @@ export const textExerciseRoute: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/text-exercises/:exerciseId/plagiarism', + path: 'text-exercises/:exerciseId/plagiarism', loadComponent: () => import('app/exercises/shared/plagiarism/plagiarism-inspector/plagiarism-inspector.component').then((m) => m.PlagiarismInspectorComponent), resolve: { exercise: TextExerciseResolver, @@ -105,7 +57,7 @@ export const textExerciseRoute: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/text-exercises/:exerciseId/example-submissions', + path: 'text-exercises/:exerciseId/example-submissions', loadComponent: () => import('app/exercises/shared/example-submission/example-submissions.component').then((m) => m.ExampleSubmissionsComponent), resolve: { exercise: TextExerciseResolver, @@ -117,16 +69,12 @@ export const textExerciseRoute: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/text-exercises', - redirectTo: ':courseId/exercises', - }, - { - path: ':courseId/text-exercises/:exerciseId/iris-settings', + path: 'text-exercises/:exerciseId/iris-settings', loadChildren: () => import('app/iris/settings/iris-exercise-settings-update/iris-exercise-settings-update-routing.module').then((m) => m.IrisExerciseSettingsUpdateRoutingModule), }, { - path: ':courseId/text-exercises/:exerciseId/exercise-statistics', + path: 'text-exercises/:exerciseId/exercise-statistics', loadComponent: () => import('app/exercises/shared/statistics/exercise-statistics.component').then((m) => m.ExerciseStatisticsComponent), resolve: { exercise: TextExerciseResolver, @@ -138,7 +86,11 @@ export const textExerciseRoute: Routes = [ canActivate: [UserRouteAccessService], }, { - path: ':courseId/text-exercises/:exerciseId/tutor-effort-statistics', + path: 'text-exercises/:exerciseId/tutor-effort-statistics', loadChildren: () => import('../tutor-effort/tutor-effort-statistics.module').then((m) => m.ArtemisTutorEffortStatisticsModule), }, + { + path: 'text-exercises/:exerciseId/example-submissions/:exampleSubmissionId', + loadChildren: () => import('../example-text-submission/example-text-submission.route').then((m) => m.exampleTextSubmissionRoute), + }, ]; diff --git a/src/main/webapp/app/feature-overview/feature-overview.module.ts b/src/main/webapp/app/feature-overview/feature-overview.module.ts deleted file mode 100644 index b17eeafbf280..000000000000 --- a/src/main/webapp/app/feature-overview/feature-overview.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; -import { FeatureOverviewComponent } from 'app/feature-overview/feature-overview.component'; -import { featureOverviewState } from 'app/feature-overview/feature-overview.route'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; - -const FEATURE_OVERVIEW_ROUTES = [...featureOverviewState]; -@NgModule({ - imports: [RouterModule.forChild(FEATURE_OVERVIEW_ROUTES), ArtemisSharedModule, FeatureOverviewComponent], -}) -export class FeatureOverviewModule {} diff --git a/src/main/webapp/app/grading-system/grading-system.module.ts b/src/main/webapp/app/grading-system/grading-system.module.ts deleted file mode 100644 index ffd3a1beabb6..000000000000 --- a/src/main/webapp/app/grading-system/grading-system.module.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { DetailedGradingSystemComponent } from 'app/grading-system/detailed-grading-system/detailed-grading-system.component'; -import { GradingSystemInfoModalComponent } from 'app/grading-system/grading-system-info-modal/grading-system-info-modal.component'; -import { GradingSystemComponent } from 'app/grading-system/grading-system.component'; -import { gradingSystemState } from 'app/grading-system/grading-system.route'; -import { RouterModule } from '@angular/router'; -import { IntervalGradingSystemComponent } from 'app/grading-system/interval-grading-system/interval-grading-system.component'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { GradingSystemPresentationsComponent } from 'app/grading-system/grading-system-presentations/grading-system-presentations.component'; - -@NgModule({ - imports: [ - ArtemisSharedModule, - RouterModule.forChild(gradingSystemState), - ArtemisSharedComponentModule, - GradingSystemComponent, - DetailedGradingSystemComponent, - IntervalGradingSystemComponent, - GradingSystemInfoModalComponent, - GradingSystemPresentationsComponent, - ], - exports: [GradingSystemComponent, GradingSystemInfoModalComponent], -}) -export class GradingSystemModule {} diff --git a/src/main/webapp/app/iris/settings/iris-course-settings-update/iris-course-settings-update-routing.module.ts b/src/main/webapp/app/iris/settings/iris-course-settings-update/iris-course-settings-update.route.ts similarity index 71% rename from src/main/webapp/app/iris/settings/iris-course-settings-update/iris-course-settings-update-routing.module.ts rename to src/main/webapp/app/iris/settings/iris-course-settings-update/iris-course-settings-update.route.ts index 6d628ecc67a4..e29988e0b4e8 100644 --- a/src/main/webapp/app/iris/settings/iris-course-settings-update/iris-course-settings-update-routing.module.ts +++ b/src/main/webapp/app/iris/settings/iris-course-settings-update/iris-course-settings-update.route.ts @@ -1,7 +1,5 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { Authority } from 'app/shared/constants/authority.constants'; -import { IrisModule } from 'app/iris/iris.module'; import { PendingChangesGuard } from 'app/shared/guard/pending-changes.guard'; import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; @@ -19,9 +17,4 @@ const routes: Routes = [ canDeactivate: [PendingChangesGuard], }, ]; - -@NgModule({ - imports: [RouterModule.forChild(routes), IrisModule], - exports: [RouterModule], -}) -export class IrisCourseSettingsUpdateRoutingModule {} +export { routes }; diff --git a/src/main/webapp/app/lecture/lecture-resolve.service.ts b/src/main/webapp/app/lecture/lecture-resolve.service.ts new file mode 100644 index 000000000000..c6b4d75de430 --- /dev/null +++ b/src/main/webapp/app/lecture/lecture-resolve.service.ts @@ -0,0 +1,40 @@ +import { Lecture } from 'app/entities/lecture.model'; +import { LectureService } from 'app/lecture/lecture.service'; +import { Attachment } from 'app/entities/attachment.model'; +import { AttachmentService } from 'app/lecture/attachment.service'; +import { Injectable, inject } from '@angular/core'; +import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; +import { Observable, filter, map, of } from 'rxjs'; +import { HttpResponse } from '@angular/common/http'; + +@Injectable({ providedIn: 'root' }) +export class LectureResolve implements Resolve { + private lectureService = inject(LectureService); + + resolve(route: ActivatedRouteSnapshot): Observable { + const lectureId = route.params['lectureId']; + if (lectureId) { + return this.lectureService.find(lectureId).pipe( + filter((response: HttpResponse) => response.ok), + map((lecture: HttpResponse) => lecture.body!), + ); + } + return of(new Lecture()); + } +} + +@Injectable({ providedIn: 'root' }) +export class AttachmentResolve implements Resolve { + private attachmentService = inject(AttachmentService); + + resolve(route: ActivatedRouteSnapshot): Observable { + const attachmentId = route.params['attachmentId']; + if (attachmentId) { + return this.attachmentService.find(attachmentId).pipe( + filter((response: HttpResponse) => response.ok), + map((attachment: HttpResponse) => attachment.body!), + ); + } + return of(new Attachment()); + } +} diff --git a/src/main/webapp/app/lecture/lecture-unit/lecture-unit-management/lecture-unit-management-resolve.service.ts b/src/main/webapp/app/lecture/lecture-unit/lecture-unit-management/lecture-unit-management-resolve.service.ts new file mode 100644 index 000000000000..df404f2b4d96 --- /dev/null +++ b/src/main/webapp/app/lecture/lecture-unit/lecture-unit-management/lecture-unit-management-resolve.service.ts @@ -0,0 +1,25 @@ +import { Injectable, inject } from '@angular/core'; +import { HttpResponse } from '@angular/common/http'; +import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; +import { Observable, of } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; + +import { AttachmentUnit } from 'app/entities/lecture-unit/attachmentUnit.model'; +import { AttachmentUnitService } from 'app/lecture/lecture-unit/lecture-unit-management/attachmentUnit.service'; + +@Injectable({ providedIn: 'root' }) +export class AttachmentUnitResolve implements Resolve { + private attachmentUnitService = inject(AttachmentUnitService); + + resolve(route: ActivatedRouteSnapshot): Observable { + const lectureId = route.params['lectureId']; + const attachmentUnitId = route.params['attachmentUnitId']; + if (attachmentUnitId) { + return this.attachmentUnitService.findById(attachmentUnitId, lectureId).pipe( + filter((response: HttpResponse) => response.ok), + map((attachmentUnit: HttpResponse) => attachmentUnit.body!), + ); + } + return of(new AttachmentUnit()); + } +} diff --git a/src/main/webapp/app/lecture/lecture-unit/lecture-unit-management/lecture-unit-management.module.ts b/src/main/webapp/app/lecture/lecture-unit/lecture-unit-management/lecture-unit-management.module.ts deleted file mode 100644 index 0d310548a110..000000000000 --- a/src/main/webapp/app/lecture/lecture-unit/lecture-unit-management/lecture-unit-management.module.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { LectureUnitManagementComponent } from 'app/lecture/lecture-unit/lecture-unit-management/lecture-unit-management.component'; -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; -import { UnitCreationCardComponent } from './unit-creation-card/unit-creation-card.component'; -import { CreateExerciseUnitComponent } from './create-exercise-unit/create-exercise-unit.component'; -import { CreateAttachmentUnitComponent } from './create-attachment-unit/create-attachment-unit.component'; -import { FormDateTimePickerModule } from 'app/shared/date-time-picker/date-time-picker.module'; -import { ReactiveFormsModule } from '@angular/forms'; -import { AttachmentUnitFormComponent } from './attachment-unit-form/attachment-unit-form.component'; -import { EditAttachmentUnitComponent } from './edit-attachment-unit/edit-attachment-unit.component'; -import { CreateVideoUnitComponent } from './create-video-unit/create-video-unit.component'; -import { EditVideoUnitComponent } from './edit-video-unit/edit-video-unit.component'; -import { VideoUnitFormComponent } from './video-unit-form/video-unit-form.component'; -import { CreateTextUnitComponent } from './create-text-unit/create-text-unit.component'; -import { TextUnitFormComponent } from './text-unit-form/text-unit-form.component'; -import { EditTextUnitComponent } from './edit-text-unit/edit-text-unit.component'; -import { ArtemisMarkdownEditorModule } from 'app/shared/markdown-editor/markdown-editor.module'; -import { LectureUnitLayoutComponent } from './lecture-unit-layout/lecture-unit-layout.component'; -import { ArtemisCompetenciesModule } from 'app/course/competencies/competency.module'; -import { ArtemisLectureUnitsModule } from 'app/overview/course-lectures/lecture-units.module'; -import { EditOnlineUnitComponent } from 'app/lecture/lecture-unit/lecture-unit-management/edit-online-unit/edit-online-unit.component'; -import { CreateOnlineUnitComponent } from 'app/lecture/lecture-unit/lecture-unit-management/create-online-unit/create-online-unit.component'; -import { OnlineUnitFormComponent } from 'app/lecture/lecture-unit/lecture-unit-management/online-unit-form/online-unit-form.component'; -import { DragDropModule } from '@angular/cdk/drag-drop'; -import { AttachmentUnitsComponent } from './attachment-units/attachment-units.component'; -import { AttachmentUnitComponent } from 'app/overview/course-lectures/attachment-unit/attachment-unit.component'; -import { VideoUnitComponent } from 'app/overview/course-lectures/video-unit/video-unit.component'; -import { TextUnitComponent } from 'app/overview/course-lectures/text-unit/text-unit.component'; -import { OnlineUnitComponent } from 'app/overview/course-lectures/online-unit/online-unit.component'; - -@NgModule({ - imports: [ - ArtemisMarkdownEditorModule, - ArtemisSharedModule, - ReactiveFormsModule, - ArtemisSharedComponentModule, - RouterModule.forChild([]), - ArtemisLectureUnitsModule, - FormDateTimePickerModule, - ArtemisCompetenciesModule, - DragDropModule, - AttachmentUnitComponent, - VideoUnitComponent, - TextUnitComponent, - OnlineUnitComponent, - LectureUnitManagementComponent, - UnitCreationCardComponent, - LectureUnitLayoutComponent, - // Exercise - CreateExerciseUnitComponent, - // Attachment - CreateAttachmentUnitComponent, - EditAttachmentUnitComponent, - AttachmentUnitFormComponent, - // Video - CreateVideoUnitComponent, - EditVideoUnitComponent, - VideoUnitFormComponent, - // Text - CreateTextUnitComponent, - EditTextUnitComponent, - TextUnitFormComponent, - // Online - CreateOnlineUnitComponent, - EditOnlineUnitComponent, - OnlineUnitFormComponent, - AttachmentUnitsComponent, - ], - exports: [ - LectureUnitManagementComponent, - UnitCreationCardComponent, - TextUnitFormComponent, - VideoUnitFormComponent, - OnlineUnitFormComponent, - AttachmentUnitFormComponent, - CreateExerciseUnitComponent, - ], -}) -export class ArtemisLectureUnitManagementModule {} diff --git a/src/main/webapp/app/lecture/lecture-unit/lecture-unit-management/lecture-unit-management.route.ts b/src/main/webapp/app/lecture/lecture-unit/lecture-unit-management/lecture-unit-management.route.ts index 19de5f472922..4d8e5b44c046 100644 --- a/src/main/webapp/app/lecture/lecture-unit/lecture-unit-management/lecture-unit-management.route.ts +++ b/src/main/webapp/app/lecture/lecture-unit/lecture-unit-management/lecture-unit-management.route.ts @@ -1,31 +1,8 @@ -import { Injectable, inject } from '@angular/core'; -import { HttpResponse } from '@angular/common/http'; -import { ActivatedRouteSnapshot, Resolve, Routes } from '@angular/router'; -import { Observable, of } from 'rxjs'; -import { filter, map } from 'rxjs/operators'; +import { Routes } from '@angular/router'; import { Authority } from 'app/shared/constants/authority.constants'; import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; - -import { AttachmentUnit } from 'app/entities/lecture-unit/attachmentUnit.model'; -import { AttachmentUnitService } from 'app/lecture/lecture-unit/lecture-unit-management/attachmentUnit.service'; import { CourseManagementResolve } from 'app/course/manage/course-management-resolve.service'; - -@Injectable({ providedIn: 'root' }) -export class AttachmentUnitResolve implements Resolve { - private attachmentUnitService = inject(AttachmentUnitService); - - resolve(route: ActivatedRouteSnapshot): Observable { - const lectureId = route.params['lectureId']; - const attachmentUnitId = route.params['attachmentUnitId']; - if (attachmentUnitId) { - return this.attachmentUnitService.findById(attachmentUnitId, lectureId).pipe( - filter((response: HttpResponse) => response.ok), - map((attachmentUnit: HttpResponse) => attachmentUnit.body!), - ); - } - return of(new AttachmentUnit()); - } -} +import { AttachmentUnitResolve } from 'app/lecture/lecture-unit/lecture-unit-management/lecture-unit-management-resolve.service'; export const lectureUnitRoute: Routes = [ { diff --git a/src/main/webapp/app/lecture/lecture.module.ts b/src/main/webapp/app/lecture/lecture.module.ts deleted file mode 100644 index ac06b95dea21..000000000000 --- a/src/main/webapp/app/lecture/lecture.module.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { FormDateTimePickerModule } from 'app/shared/date-time-picker/date-time-picker.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { ArtemisMarkdownEditorModule } from 'app/shared/markdown-editor/markdown-editor.module'; -import { LectureUpdateComponent } from 'app/lecture/lecture-update.component'; -import { LectureComponent } from 'app/lecture/lecture.component'; -import { LectureDetailComponent } from 'app/lecture/lecture-detail.component'; -import { LectureAttachmentsComponent } from 'app/lecture/lecture-attachments.component'; -import { lectureRoute } from 'app/lecture/lecture.route'; -import { ArtemisLectureUnitManagementModule } from 'app/lecture/lecture-unit/lecture-unit-management/lecture-unit-management.module'; -import { ArtemisMarkdownModule } from 'app/shared/markdown.module'; -import { LectureImportComponent } from 'app/lecture/lecture-import.component'; -import { ArtemisCompetenciesModule } from 'app/course/competencies/competency.module'; -import { TitleChannelNameModule } from 'app/shared/form/title-channel-name/title-channel-name.module'; -import { LectureTitleChannelNameComponent } from 'app/lecture/lecture-title-channel-name.component'; -import { DetailModule } from 'app/detail-overview-list/detail.module'; -import { CompetencyFormComponent } from 'app/course/competencies/forms/competency/competency-form.component'; -import { ArtemisFormsModule } from 'app/forms/artemis-forms.module'; -import { LectureUpdateUnitsComponent } from 'app/lecture/lecture-units/lecture-units.component'; -import { LectureUpdatePeriodComponent } from 'app/lecture/lecture-period/lecture-period.component'; - -const ENTITY_STATES = [...lectureRoute]; - -@NgModule({ - imports: [ - ArtemisSharedModule, - RouterModule.forChild(ENTITY_STATES), - ArtemisLectureUnitManagementModule, - FormDateTimePickerModule, - ArtemisSharedComponentModule, - ArtemisMarkdownModule, - ArtemisMarkdownEditorModule, - ArtemisCompetenciesModule, - TitleChannelNameModule, - DetailModule, - CompetencyFormComponent, - ArtemisFormsModule, - LectureComponent, - LectureDetailComponent, - LectureImportComponent, - LectureUpdateComponent, - LectureAttachmentsComponent, - LectureTitleChannelNameComponent, - LectureUpdateUnitsComponent, - LectureUpdatePeriodComponent, - ], -}) -export class ArtemisLectureModule {} diff --git a/src/main/webapp/app/lecture/lecture.route.ts b/src/main/webapp/app/lecture/lecture.route.ts index 12619243b61f..54556bdd6053 100644 --- a/src/main/webapp/app/lecture/lecture.route.ts +++ b/src/main/webapp/app/lecture/lecture.route.ts @@ -1,63 +1,46 @@ -import { Injectable, inject } from '@angular/core'; -import { HttpResponse } from '@angular/common/http'; -import { ActivatedRouteSnapshot, Resolve, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { UserRouteAccessService } from 'app/core/auth/user-route-access-service'; -import { Observable, of } from 'rxjs'; -import { filter, map } from 'rxjs/operators'; -import { LectureService } from './lecture.service'; - -import { Lecture } from 'app/entities/lecture.model'; import { Authority } from 'app/shared/constants/authority.constants'; import { lectureUnitRoute } from 'app/lecture/lecture-unit/lecture-unit-management/lecture-unit-management.route'; import { CourseManagementResolve } from 'app/course/manage/course-management-resolve.service'; - -import { Attachment } from 'app/entities/attachment.model'; -import { AttachmentService } from 'app/lecture/attachment.service'; import { hasLectureUnsavedChangesGuard } from './hasLectureUnsavedChanges.guard'; - -@Injectable({ providedIn: 'root' }) -export class LectureResolve implements Resolve { - private lectureService = inject(LectureService); - - resolve(route: ActivatedRouteSnapshot): Observable { - const lectureId = route.params['lectureId']; - if (lectureId) { - return this.lectureService.find(lectureId).pipe( - filter((response: HttpResponse) => response.ok), - map((lecture: HttpResponse) => lecture.body!), - ); - } - return of(new Lecture()); - } -} - -@Injectable({ providedIn: 'root' }) -export class AttachmentResolve implements Resolve { - private attachmentService = inject(AttachmentService); - - resolve(route: ActivatedRouteSnapshot): Observable { - const attachmentId = route.params['attachmentId']; - if (attachmentId) { - return this.attachmentService.find(attachmentId).pipe( - filter((response: HttpResponse) => response.ok), - map((attachment: HttpResponse) => attachment.body!), - ); - } - return of(new Attachment()); - } -} +import { AttachmentResolve, LectureResolve } from 'app/lecture/lecture-resolve.service'; export const lectureRoute: Routes = [ { - path: ':courseId/lectures', - loadComponent: () => import('app/course/manage/course-management-tab-bar/course-management-tab-bar.component').then((m) => m.CourseManagementTabBarComponent), + path: '', + loadComponent: () => import('./lecture.component').then((m) => m.LectureComponent), + resolve: { + course: CourseManagementResolve, + }, + data: { + authorities: [Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], + pageTitle: 'artemisApp.lecture.home.title', + }, + canActivate: [UserRouteAccessService], + }, + { + // Create a new path without a component defined to prevent the LectureComponent from being always rendered + path: '', + resolve: { + course: CourseManagementResolve, + }, children: [ { - path: '', - loadComponent: () => import('./lecture.component').then((m) => m.LectureComponent), + path: 'new', + loadComponent: () => import('./lecture-update.component').then((m) => m.LectureUpdateComponent), + data: { + authorities: [Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], + pageTitle: 'global.generic.create', + }, + canActivate: [UserRouteAccessService], + }, + { + path: ':lectureId', + loadComponent: () => import('./lecture-detail.component').then((m) => m.LectureDetailComponent), resolve: { - course: CourseManagementResolve, + lecture: LectureResolve, }, data: { authorities: [Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], @@ -66,75 +49,45 @@ export const lectureRoute: Routes = [ canActivate: [UserRouteAccessService], }, { - // Create a new path without a component defined to prevent the LectureComponent from being always rendered - path: '', + path: ':lectureId', resolve: { - course: CourseManagementResolve, + lecture: LectureResolve, }, children: [ { - path: 'new', - loadComponent: () => import('./lecture-update.component').then((m) => m.LectureUpdateComponent), + path: 'attachments', + loadComponent: () => import('app/lecture/lecture-attachments.component').then((m) => m.LectureAttachmentsComponent), data: { authorities: [Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], - pageTitle: 'global.generic.create', + pageTitle: 'artemisApp.lecture.attachments.title', }, canActivate: [UserRouteAccessService], }, { - path: ':lectureId', - loadComponent: () => import('./lecture-detail.component').then((m) => m.LectureDetailComponent), - resolve: { - lecture: LectureResolve, - }, - data: { - authorities: [Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], - pageTitle: 'artemisApp.lecture.home.title', - }, + path: 'attachments', canActivate: [UserRouteAccessService], - }, - { - path: ':lectureId', - resolve: { - lecture: LectureResolve, - }, children: [ { - path: 'attachments', - loadComponent: () => import('app/lecture/lecture-attachments.component').then((m) => m.LectureAttachmentsComponent), - data: { - authorities: [Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], - pageTitle: 'artemisApp.lecture.attachments.title', + path: ':attachmentId', + loadComponent: () => import('app/lecture/pdf-preview/pdf-preview.component').then((m) => m.PdfPreviewComponent), + resolve: { + attachment: AttachmentResolve, + course: CourseManagementResolve, }, - canActivate: [UserRouteAccessService], }, - { - path: 'attachments', - canActivate: [UserRouteAccessService], - children: [ - { - path: ':attachmentId', - loadComponent: () => import('app/lecture/pdf-preview/pdf-preview.component').then((m) => m.PdfPreviewComponent), - resolve: { - attachment: AttachmentResolve, - course: CourseManagementResolve, - }, - }, - ], - }, - { - path: 'edit', - loadComponent: () => import('./lecture-update.component').then((m) => m.LectureUpdateComponent), - data: { - authorities: [Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], - pageTitle: 'global.generic.edit', - }, - canActivate: [UserRouteAccessService], - canDeactivate: [hasLectureUnsavedChangesGuard], - }, - ...lectureUnitRoute, ], }, + { + path: 'edit', + loadComponent: () => import('./lecture-update.component').then((m) => m.LectureUpdateComponent), + data: { + authorities: [Authority.EDITOR, Authority.INSTRUCTOR, Authority.ADMIN], + pageTitle: 'global.generic.edit', + }, + canActivate: [UserRouteAccessService], + canDeactivate: [hasLectureUnsavedChangesGuard], + }, + ...lectureUnitRoute, ], }, ], diff --git a/src/main/webapp/app/overview/exercise-details/course-exercise-details.module.ts b/src/main/webapp/app/overview/exercise-details/course-exercise-details.module.ts index d00f718aafe4..a4ae93b8fe39 100644 --- a/src/main/webapp/app/overview/exercise-details/course-exercise-details.module.ts +++ b/src/main/webapp/app/overview/exercise-details/course-exercise-details.module.ts @@ -19,7 +19,6 @@ import { ArtemisMarkdownModule } from 'app/shared/markdown.module'; import { SubmissionResultStatusModule } from 'app/overview/submission-result-status.module'; import { LtiInitializerComponent } from 'app/overview/exercise-details/lti-initializer.component'; import { LtiInitializerModalComponent } from 'app/overview/exercise-details/lti-initializer-modal.component'; -import { ArtemisProgrammingExerciseManagementModule } from 'app/exercises/programming/manage/programming-exercise-management.module'; import { ProblemStatementComponent } from 'app/overview/exercise-details/problem-statement/problem-statement.component'; import { ArtemisFeedbackModule } from 'app/exercises/shared/feedback/feedback.module'; import { ArtemisExerciseInfoModule } from 'app/exercises/shared/exercise-info/exercise-info.module'; @@ -58,7 +57,6 @@ const standaloneComponents = [ExerciseHeadersInformationComponent]; ArtemisModelingEditorModule, ArtemisMarkdownModule, SubmissionResultStatusModule, - ArtemisProgrammingExerciseManagementModule, ArtemisFeedbackModule, ArtemisExerciseInfoModule, IrisModule, diff --git a/src/main/webapp/app/shared/course-group/course-group.module.ts b/src/main/webapp/app/shared/course-group/course-group.module.ts deleted file mode 100644 index 04b531f5a7d7..000000000000 --- a/src/main/webapp/app/shared/course-group/course-group.module.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CourseGroupComponent } from 'app/shared/course-group/course-group.component'; -import { ArtemisDataTableModule } from 'app/shared/data-table/data-table.module'; -import { UserImportModule } from 'app/shared/user-import/user-import.module'; -import { NgxDatatableModule } from '@siemens/ngx-datatable'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { RouterModule } from '@angular/router'; -import { ProfilePictureComponent } from 'app/shared/profile-picture/profile-picture.component'; - -@NgModule({ - imports: [ArtemisDataTableModule, UserImportModule, NgxDatatableModule, ArtemisSharedModule, RouterModule, ProfilePictureComponent, CourseGroupComponent], - exports: [CourseGroupComponent], -}) -export class ArtemisCourseGroupModule {} diff --git a/src/main/webapp/app/shared/dashboards/dashboards.module.ts b/src/main/webapp/app/shared/dashboards/dashboards.module.ts deleted file mode 100644 index 5e9881112a69..000000000000 --- a/src/main/webapp/app/shared/dashboards/dashboards.module.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisAssessmentDashboardModule } from 'app/course/dashboards/assessment-dashboard/assessment-dashboard.module'; -import { ArtemisExerciseAssessmentDashboardModule } from 'app/exercises/shared/dashboards/tutor/exercise-assessment-dashboard.module'; - -@NgModule({ - imports: [ArtemisAssessmentDashboardModule, ArtemisExerciseAssessmentDashboardModule], -}) -export class ArtemisDashboardsModule {} diff --git a/src/main/webapp/app/shared/dashboards/tutor-leaderboard/tutor-leaderboard.module.ts b/src/main/webapp/app/shared/dashboards/tutor-leaderboard/tutor-leaderboard.module.ts deleted file mode 100644 index e916a735f163..000000000000 --- a/src/main/webapp/app/shared/dashboards/tutor-leaderboard/tutor-leaderboard.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; -import { TutorLeaderboardComponent } from 'app/shared/dashboards/tutor-leaderboard/tutor-leaderboard.component'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; - -@NgModule({ - imports: [ArtemisSharedModule, RouterModule.forChild([]), TutorLeaderboardComponent], - exports: [TutorLeaderboardComponent], -}) -export class ArtemisTutorLeaderboardModule {} diff --git a/src/main/webapp/app/shared/date-time-picker/date-time-picker.module.ts b/src/main/webapp/app/shared/date-time-picker/date-time-picker.module.ts deleted file mode 100644 index 8c4b84c7b3d9..000000000000 --- a/src/main/webapp/app/shared/date-time-picker/date-time-picker.module.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { NgModule } from '@angular/core'; -import { OWL_DATE_TIME_FORMATS, OwlDateTimeModule, OwlNativeDateTimeModule } from '@danielmoncada/angular-datetime-picker'; -import { FormDateTimePickerComponent } from './date-time-picker.component'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; - -export const MY_NATIVE_FORMATS = { - fullPickerInput: { year: 'numeric', month: 'short', day: 'numeric', hour: 'numeric', minute: 'numeric', second: 'numeric' }, - datePickerInput: { year: 'numeric', month: 'numeric', day: 'numeric' }, - timePickerInput: { hour: 'numeric', minute: 'numeric' }, - monthYearLabel: { year: 'numeric', month: 'short' }, - dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' }, - monthYearA11yLabel: { year: 'numeric', month: 'long' }, -}; -@NgModule({ - imports: [ - CommonModule, - FormsModule, - OwlDateTimeModule, - OwlNativeDateTimeModule, - ReactiveFormsModule, - ArtemisSharedModule, - ArtemisSharedComponentModule, - FormDateTimePickerComponent, - ], - exports: [FormDateTimePickerComponent], - providers: [{ provide: OWL_DATE_TIME_FORMATS, useValue: MY_NATIVE_FORMATS }], -}) -export class FormDateTimePickerModule {} diff --git a/src/main/webapp/app/shared/export/export.module.ts b/src/main/webapp/app/shared/export/export.module.ts deleted file mode 100644 index 939b5356f0cf..000000000000 --- a/src/main/webapp/app/shared/export/export.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ExportModalComponent } from 'app/shared/export/export-modal.component'; -import { ExportButtonComponent } from 'app/shared/export/export-button.component'; -import { NgModule } from '@angular/core'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { ArtemisSharedCommonModule } from 'app/shared/shared-common.module'; - -@NgModule({ - imports: [ArtemisSharedComponentModule, ArtemisSharedCommonModule, ExportModalComponent, ExportButtonComponent], - exports: [ExportModalComponent, ExportButtonComponent], -}) -export class ExportModule {} diff --git a/src/main/webapp/app/shared/grading-instruction-link-icon/grading-instruction-link-icon.module.ts b/src/main/webapp/app/shared/grading-instruction-link-icon/grading-instruction-link-icon.module.ts deleted file mode 100644 index 46a830041367..000000000000 --- a/src/main/webapp/app/shared/grading-instruction-link-icon/grading-instruction-link-icon.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { NgModule } from '@angular/core'; - -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { GradingInstructionLinkIconComponent } from 'app/shared/grading-instruction-link-icon/grading-instruction-link-icon.component'; - -@NgModule({ - imports: [ArtemisSharedModule, GradingInstructionLinkIconComponent], - exports: [GradingInstructionLinkIconComponent], -}) -export class ArtemisGradingInstructionLinkIconModule {} diff --git a/src/main/webapp/app/shared/participant-scores/participant-scores.module.ts b/src/main/webapp/app/shared/participant-scores/participant-scores.module.ts deleted file mode 100644 index 30551dafe00d..000000000000 --- a/src/main/webapp/app/shared/participant-scores/participant-scores.module.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisSharedModule } from 'app/shared/shared.module'; -import { ArtemisDataTableModule } from 'app/shared/data-table/data-table.module'; -import { NgxDatatableModule } from '@siemens/ngx-datatable'; -import { ParticipantScoresDistributionComponent } from 'app/shared/participant-scores/participant-scores-distribution/participant-scores-distribution.component'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { BarChartModule } from '@swimlane/ngx-charts'; - -@NgModule({ - imports: [ArtemisSharedModule, ArtemisDataTableModule, NgxDatatableModule, ArtemisSharedComponentModule, BarChartModule, ParticipantScoresDistributionComponent], - exports: [ParticipantScoresDistributionComponent], -}) -export class ArtemisParticipantScoresModule {} diff --git a/src/main/webapp/app/shared/type-ahead-search-field/type-ahead-user-search-field.module.ts b/src/main/webapp/app/shared/type-ahead-search-field/type-ahead-user-search-field.module.ts deleted file mode 100644 index 4b1880a81542..000000000000 --- a/src/main/webapp/app/shared/type-ahead-search-field/type-ahead-user-search-field.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ArtemisSharedCommonModule } from 'app/shared/shared-common.module'; -import { TypeAheadUserSearchFieldComponent } from 'app/shared/type-ahead-search-field/type-ahead-user-search-field.component'; - -@NgModule({ - imports: [ArtemisSharedCommonModule, TypeAheadUserSearchFieldComponent], - exports: [TypeAheadUserSearchFieldComponent], -}) -export class TypeAheadUserSearchFieldModule {} diff --git a/src/main/webapp/app/shared/user-import/user-import.module.ts b/src/main/webapp/app/shared/user-import/user-import.module.ts deleted file mode 100644 index 5e36aa4a6c5f..000000000000 --- a/src/main/webapp/app/shared/user-import/user-import.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { UsersImportDialogComponent } from 'app/shared/user-import/users-import-dialog.component'; -import { UsersImportButtonComponent } from 'app/shared/user-import/users-import-button.component'; -import { NgModule } from '@angular/core'; -import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; -import { ArtemisSharedCommonModule } from 'app/shared/shared-common.module'; - -@NgModule({ - imports: [ArtemisSharedComponentModule, ArtemisSharedCommonModule, UsersImportDialogComponent, UsersImportButtonComponent], - exports: [UsersImportDialogComponent, UsersImportButtonComponent], -}) -export class UserImportModule {} diff --git a/src/main/webapp/app/shared/user-settings/user-settings.module.ts b/src/main/webapp/app/shared/user-settings/user-settings.module.ts index 18464cc5e7cd..003413c278de 100644 --- a/src/main/webapp/app/shared/user-settings/user-settings.module.ts +++ b/src/main/webapp/app/shared/user-settings/user-settings.module.ts @@ -9,7 +9,6 @@ import { SshUserSettingsComponent } from 'app/shared/user-settings/ssh-settings/ import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; import { VcsAccessTokensSettingsComponent } from 'app/shared/user-settings/vcs-access-tokens-settings/vcs-access-tokens-settings.component'; import { ClipboardModule } from '@angular/cdk/clipboard'; -import { FormDateTimePickerModule } from 'app/shared/date-time-picker/date-time-picker.module'; import { IdeSettingsComponent } from 'app/shared/user-settings/ide-preferences/ide-settings.component'; import { DocumentationLinkComponent } from 'app/shared/components/documentation-link/documentation-link.component'; import { SshUserSettingsKeyDetailsComponent } from 'app/shared/user-settings/ssh-settings/details/ssh-user-settings-key-details.component'; @@ -21,7 +20,6 @@ import { SshUserSettingsFingerprintsComponent } from 'app/shared/user-settings/s ArtemisSharedModule, ArtemisSharedComponentModule, ClipboardModule, - FormDateTimePickerModule, DocumentationLinkComponent, AccountInformationComponent, NotificationSettingsComponent, diff --git a/src/test/javascript/spec/component/competencies/competency-form.component.spec.ts b/src/test/javascript/spec/component/competencies/competency-form.component.spec.ts index 4237527f6680..e5ea266baea7 100644 --- a/src/test/javascript/spec/component/competencies/competency-form.component.spec.ts +++ b/src/test/javascript/spec/component/competencies/competency-form.component.spec.ts @@ -16,6 +16,7 @@ import { CommonCourseCompetencyFormComponent } from 'app/course/competencies/for import { MarkdownEditorMonacoComponent } from 'app/shared/markdown-editor/monaco/markdown-editor-monaco.component'; import { ArtemisMarkdownEditorModule } from 'app/shared/markdown-editor/markdown-editor.module'; import { CourseCompetencyService } from '../../../../../main/webapp/app/course/competencies/course-competency.service'; +import { OwlNativeDateTimeModule } from '@danielmoncada/angular-datetime-picker'; describe('CompetencyFormComponent', () => { let competencyFormComponentFixture: ComponentFixture; @@ -25,7 +26,7 @@ describe('CompetencyFormComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule], + imports: [ArtemisTestModule, OwlNativeDateTimeModule], declarations: [], providers: [MockProvider(CourseCompetencyService), MockProvider(LectureUnitService)], }) diff --git a/src/test/javascript/spec/component/competencies/edit-competency.component.spec.ts b/src/test/javascript/spec/component/competencies/edit-competency.component.spec.ts index a65a79b3c84c..ae43b9a8adf8 100644 --- a/src/test/javascript/spec/component/competencies/edit-competency.component.spec.ts +++ b/src/test/javascript/spec/component/competencies/edit-competency.component.spec.ts @@ -17,13 +17,14 @@ import { ArtemisTestModule } from '../../test.module'; import { CompetencyFormComponent } from 'app/course/competencies/forms/competency/competency-form.component'; import { MarkdownEditorMonacoComponent } from 'app/shared/markdown-editor/monaco/markdown-editor-monaco.component'; import { ArtemisMarkdownEditorModule } from 'app/shared/markdown-editor/markdown-editor.module'; +import { OwlNativeDateTimeModule } from '@danielmoncada/angular-datetime-picker'; describe('EditCompetencyComponent', () => { let editCompetencyComponentFixture: ComponentFixture; let editCompetencyComponent: EditCompetencyComponent; beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, EditCompetencyComponent, CompetencyFormStubComponent], + imports: [ArtemisTestModule, EditCompetencyComponent, CompetencyFormStubComponent, OwlNativeDateTimeModule], declarations: [], providers: [ MockProvider(LectureService), diff --git a/src/test/javascript/spec/component/competencies/edit-prerequisite.component.spec.ts b/src/test/javascript/spec/component/competencies/edit-prerequisite.component.spec.ts index 2c5676384d2b..6437ce5afdd2 100644 --- a/src/test/javascript/spec/component/competencies/edit-prerequisite.component.spec.ts +++ b/src/test/javascript/spec/component/competencies/edit-prerequisite.component.spec.ts @@ -18,13 +18,14 @@ import { PrerequisiteFormComponent } from 'app/course/competencies/forms/prerequ import { PrerequisiteFormStubComponent } from './prerequisite-form-stub.component'; import { MarkdownEditorMonacoComponent } from 'app/shared/markdown-editor/monaco/markdown-editor-monaco.component'; import { ArtemisMarkdownEditorModule } from 'app/shared/markdown-editor/markdown-editor.module'; +import { OwlNativeDateTimeModule } from '@danielmoncada/angular-datetime-picker'; describe('EditPrerequisiteComponent', () => { let editPrerequisiteComponentFixture: ComponentFixture; let editPrerequisiteComponent: EditPrerequisiteComponent; beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [ArtemisTestModule, EditPrerequisiteComponent, PrerequisiteFormStubComponent], + imports: [ArtemisTestModule, EditPrerequisiteComponent, PrerequisiteFormStubComponent, OwlNativeDateTimeModule], declarations: [], providers: [ MockProvider(LectureService), diff --git a/src/test/javascript/spec/component/competencies/prerequisite-form.component.spec.ts b/src/test/javascript/spec/component/competencies/prerequisite-form.component.spec.ts index 93a42254f879..24d4f0aadd44 100644 --- a/src/test/javascript/spec/component/competencies/prerequisite-form.component.spec.ts +++ b/src/test/javascript/spec/component/competencies/prerequisite-form.component.spec.ts @@ -21,6 +21,7 @@ import { PrerequisiteService } from 'app/course/competencies/prerequisite.servic import { Prerequisite } from 'app/entities/prerequisite.model'; import { MockResizeObserver } from '../../helpers/mocks/service/mock-resize-observer'; import { CourseCompetencyService } from '../../../../../main/webapp/app/course/competencies/course-competency.service'; +import { OwlNativeDateTimeModule } from '@danielmoncada/angular-datetime-picker'; describe('PrerequisiteFormComponent', () => { let prerequisiteFormComponentFixture: ComponentFixture; @@ -32,7 +33,7 @@ describe('PrerequisiteFormComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [CompetencyFormComponent, ArtemisTestModule, ReactiveFormsModule, NgbDropdownModule], + imports: [CompetencyFormComponent, ArtemisTestModule, ReactiveFormsModule, NgbDropdownModule, OwlNativeDateTimeModule], providers: [ { provide: PrerequisiteService, useValue: prerequisiteServiceMock }, { provide: TranslateService, useClass: MockTranslateService }, @@ -163,7 +164,14 @@ describe('PrerequisiteFormComponent', () => { it('validator should verify title is unique', fakeAsync(() => { const existingTitles = ['nameExisting']; - jest.spyOn(courseCompetencyServiceMock, 'getCourseCompetencyTitles').mockReturnValue(of(new HttpResponse({ body: existingTitles, status: 200 }))); + jest.spyOn(courseCompetencyServiceMock, 'getCourseCompetencyTitles').mockReturnValue( + of( + new HttpResponse({ + body: existingTitles, + status: 200, + }), + ), + ); prerequisiteFormComponent.isEditMode = true; prerequisiteFormComponent.formData.title = 'initialName'; diff --git a/src/test/javascript/spec/component/example-modeling/example-modeling-submission.component.spec.ts b/src/test/javascript/spec/component/example-modeling/example-modeling-submission.component.spec.ts index 720fa875f944..eaf781f8ff79 100644 --- a/src/test/javascript/spec/component/example-modeling/example-modeling-submission.component.spec.ts +++ b/src/test/javascript/spec/component/example-modeling/example-modeling-submission.component.spec.ts @@ -1,10 +1,10 @@ -import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; +import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; import { delay, of, throwError } from 'rxjs'; import { ArtemisTestModule } from '../../test.module'; import { ModelingSubmission } from 'app/entities/modeling-submission.model'; -import { ActivatedRoute, ActivatedRouteSnapshot, Router, convertToParamMap } from '@angular/router'; +import { ActivatedRoute, ActivatedRouteSnapshot, convertToParamMap, Router } from '@angular/router'; import { ChangeDetectorRef, DebugElement } from '@angular/core'; -import { MockComponent, MockModule, MockProvider } from 'ng-mocks'; +import { MockComponent, MockProvider } from 'ng-mocks'; import { ModelingEditorComponent } from 'app/exercises/modeling/shared/modeling-editor.component'; import { ModelingExercise } from 'app/entities/modeling-exercise.model'; import { StudentParticipation } from 'app/entities/participation/student-participation.model'; @@ -16,7 +16,6 @@ import { AlertService } from 'app/core/util/alert.service'; import { ExampleModelingSubmissionComponent } from 'app/exercises/modeling/manage/example-modeling/example-modeling-submission.component'; import { ExampleSubmissionService } from 'app/exercises/shared/example-submission/example-submission.service'; import { ExampleSubmission } from 'app/entities/example-submission.model'; -import { ArtemisExampleModelingSubmissionRoutingModule } from 'app/exercises/modeling/manage/example-modeling/example-modeling-submission.route'; import { TutorParticipationService } from 'app/exercises/shared/dashboards/tutor/tutor-participation.service'; import { ExerciseService } from 'app/exercises/shared/exercise/exercise.service'; import { ModelingAssessmentService } from 'app/exercises/modeling/assess/modeling-assessment.service'; @@ -81,7 +80,7 @@ describe('Example Modeling Submission Component', () => { } as ActivatedRoute; TestBed.configureTestingModule({ - imports: [ArtemisTestModule, TranslateTestingModule, FormsModule, MockModule(ArtemisExampleModelingSubmissionRoutingModule)], + imports: [ArtemisTestModule, TranslateTestingModule, FormsModule], declarations: [ ExampleModelingSubmissionComponent, ModelingAssessmentComponent, diff --git a/src/test/javascript/spec/component/programming-assessment/programming-assessment-repo-export-dialog.component.spec.ts b/src/test/javascript/spec/component/programming-assessment/programming-assessment-repo-export-dialog.component.spec.ts index 03db39eedf52..e23271d17255 100644 --- a/src/test/javascript/spec/component/programming-assessment/programming-assessment-repo-export-dialog.component.spec.ts +++ b/src/test/javascript/spec/component/programming-assessment/programming-assessment-repo-export-dialog.component.spec.ts @@ -1,4 +1,4 @@ -import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; +import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; import { of } from 'rxjs'; import { HttpHeaders, HttpResponse } from '@angular/common/http'; import { LocalStorageService, SessionStorageService } from 'ngx-webstorage'; @@ -13,7 +13,8 @@ import { Exercise } from 'app/entities/exercise.model'; import { MockSyncStorage } from '../../helpers/mocks/service/mock-sync-storage.service'; import { MockTranslateService } from '../../helpers/mocks/service/mock-translate.service'; import { TranslateService } from '@ngx-translate/core'; -import { FormDateTimePickerModule } from '../../../../../main/webapp/app/shared/date-time-picker/date-time-picker.module'; +import { FormDateTimePickerComponent } from 'app/shared/date-time-picker/date-time-picker.component'; +import { OwlNativeDateTimeModule } from '@danielmoncada/angular-datetime-picker'; const createBlobHttpResponse = () => { const blob = new Blob([JSON.stringify({ property: 'blob' })], { type: 'application/json' }); @@ -40,7 +41,7 @@ describe('ProgrammingAssessmentRepoExportDialogComponent', () => { beforeEach(() => { return TestBed.configureTestingModule({ - imports: [ArtemisTestModule, FormDateTimePickerModule], + imports: [ArtemisTestModule, FormDateTimePickerComponent, OwlNativeDateTimeModule], providers: [ { provide: TranslateService, useClass: MockTranslateService }, { provide: SessionStorageService, useClass: MockSyncStorage }, diff --git a/src/test/javascript/spec/service/text-assessment.service.spec.ts b/src/test/javascript/spec/service/text-assessment.service.spec.ts index 863259b528e7..ea6586b419cf 100644 --- a/src/test/javascript/spec/service/text-assessment.service.spec.ts +++ b/src/test/javascript/spec/service/text-assessment.service.spec.ts @@ -13,11 +13,11 @@ import { Course } from 'app/entities/course.model'; import { TextExercise } from 'app/entities/text/text-exercise.model'; import { ComplaintResponse } from 'app/entities/complaint-response.model'; import { TextBlockRef } from 'app/entities/text/text-block-ref.model'; -import { NewStudentParticipationResolver, StudentParticipationResolver } from 'app/exercises/text/assess/text-submission-assessment.route'; import { TextSubmissionService } from 'app/exercises/text/participate/text-submission.service'; import { of } from 'rxjs'; import { ActivatedRouteSnapshot, convertToParamMap } from '@angular/router'; import { provideHttpClient } from '@angular/common/http'; +import { NewStudentParticipationResolver, StudentParticipationResolver } from 'app/exercises/text/assess/text-submission-assessment-resolve.service'; describe('TextAssessment Service', () => { let service: TextAssessmentService;