Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exam mode: Add summary to exam deletion dialog #9185

Merged
merged 31 commits into from
Oct 12, 2024
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
446de0c
Add endpoint that generates exam summary (for deletion)
ole-ve Aug 4, 2024
68f3eab
Extend delete popup with summary of entity to be deleted
ole-ve Aug 4, 2024
bd25799
Add service method and DTO for fetching exam deletion summary
ole-ve Aug 4, 2024
a52fde6
Add entity summary to exam details view deletion modal
ole-ve Aug 4, 2024
3c41d90
Fix nullable
ole-ve Aug 4, 2024
51d6454
Change DTO from class to interface
ole-ve Aug 4, 2024
0ad7020
Add endpoint JavaDoc
ole-ve Aug 4, 2024
ef4d8f7
Nullable types on delete-dialog
ole-ve Aug 4, 2024
56cec85
Make nullable (for real)
ole-ve Aug 4, 2024
29ebf6e
Use jhiTranslate over Angular pipe
ole-ve Aug 4, 2024
1027d35
Minor translation
ole-ve Aug 4, 2024
ca035d8
Specify angular template if-condition
ole-ve Aug 4, 2024
67fa933
Use @EnforceAtLeastInstructorInCourse
ole-ve Aug 4, 2024
53549df
Comments
ole-ve Aug 5, 2024
0b6d664
Comments
ole-ve Aug 5, 2024
cfeecfb
specify missing type
ole-ve Aug 5, 2024
7cf6db4
smaller improvements
ole-ve Aug 5, 2024
fc7027b
Merge branch 'develop' into feature/summary-on-exam-deletion
ole-ve Aug 5, 2024
771e9d1
Fix nullable Boolean
ole-ve Aug 15, 2024
aad6655
Add test
ole-ve Aug 15, 2024
2884a82
Merge branch 'develop' into feature/summary-on-exam-deletion
ole-ve Aug 15, 2024
c6dc37c
Naming
ole-ve Aug 15, 2024
d706989
Merge remote-tracking branch 'origin/develop' into feature/summary-on…
ole-ve Sep 7, 2024
44970b0
Merge remote-tracking branch 'origin/develop' into feature/summary-on…
ole-ve Sep 28, 2024
2f2c8eb
Revert unintended change
ole-ve Sep 28, 2024
01821cd
Merge aftermath
ole-ve Sep 28, 2024
e9695e4
General: Add course summary to course deletion dialog (#9186)
ole-ve Oct 3, 2024
b9259cf
Merge remote-tracking branch 'origin/develop' into feature/summary-on…
ole-ve Oct 11, 2024
c603416
Merge aftermath
ole-ve Oct 11, 2024
c51bd33
Re-add test
ole-ve Oct 11, 2024
8ce0b55
Merge branch 'develop' into feature/summary-on-exam-deletion
krusche Oct 12, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -103,4 +103,16 @@ Page<Long> findAllByFilterCriteria(@Param("buildStatus") BuildStatus buildStatus
""")
List<BuildJobResultCountDTO> getBuildJobsResultsStatistics(@Param("fromDateTime") ZonedDateTime fromDateTime, @Param("courseId") Long courseId);

/**
* Get the number of build jobs for exercise id.
*/
@Query("""
SELECT COUNT(b)
FROM BuildJob b
LEFT JOIN Result r ON b.result.id = r.id
LEFT JOIN Participation p ON r.participation.id = p.id
LEFT JOIN Exercise e ON p.exercise.id = e.id
WHERE e.id = :exerciseId
""")
long countBuildJobsByExerciseId(@Param("exerciseId") Long exerciseId);
ole-ve marked this conversation as resolved.
Show resolved Hide resolved
}
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,8 @@ SELECT MAX(se.workingTime)
""")
Set<StudentExam> findAllUnsubmittedWithExercisesByExamId(@Param("examId") Long examId);

List<StudentExam> findAllByExamId(Long examId);

List<StudentExam> findAllByExamId_AndTestRunIsTrue(Long examId);

@Query("""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,6 @@ default AnswerPost findAnswerPostByIdElseThrow(Long answerPostId) {
default AnswerPost findAnswerMessageByIdElseThrow(Long answerPostId) {
return getValueElseThrow(findById(answerPostId).filter(answerPost -> answerPost.getPost().getConversation() != null), answerPostId);
}

long countAnswerPostsByPostIdIn(List<Long> postIds);
}
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,6 @@ default Post findPostByIdElseThrow(Long postId) throws EntityNotFoundException {
default Post findPostOrMessagePostByIdElseThrow(Long postId) throws EntityNotFoundException {
return getValueElseThrow(findById(postId), postId);
}

List<Post> findAllByConversationId(Long conversationId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,22 +22,28 @@
import de.tum.in.www1.artemis.domain.Exercise;
import de.tum.in.www1.artemis.domain.GradingScale;
import de.tum.in.www1.artemis.domain.User;
import de.tum.in.www1.artemis.domain.enumeration.ExerciseType;
import de.tum.in.www1.artemis.domain.exam.Exam;
import de.tum.in.www1.artemis.domain.exam.ExerciseGroup;
import de.tum.in.www1.artemis.domain.exam.StudentExam;
import de.tum.in.www1.artemis.domain.metis.Post;
import de.tum.in.www1.artemis.domain.metis.conversation.Channel;
import de.tum.in.www1.artemis.domain.quiz.QuizPool;
import de.tum.in.www1.artemis.repository.BuildJobRepository;
import de.tum.in.www1.artemis.repository.ExamLiveEventRepository;
import de.tum.in.www1.artemis.repository.ExamRepository;
import de.tum.in.www1.artemis.repository.GradingScaleRepository;
import de.tum.in.www1.artemis.repository.QuizPoolRepository;
import de.tum.in.www1.artemis.repository.StudentExamRepository;
import de.tum.in.www1.artemis.repository.StudentParticipationRepository;
import de.tum.in.www1.artemis.repository.UserRepository;
import de.tum.in.www1.artemis.repository.metis.AnswerPostRepository;
import de.tum.in.www1.artemis.repository.metis.PostRepository;
import de.tum.in.www1.artemis.repository.metis.conversation.ChannelRepository;
import de.tum.in.www1.artemis.service.ExerciseDeletionService;
import de.tum.in.www1.artemis.service.ParticipationService;
import de.tum.in.www1.artemis.service.metis.conversation.ChannelService;
import de.tum.in.www1.artemis.web.rest.dto.ExamDeletionSummaryDTO;

@Profile(PROFILE_CORE)
@Service
Expand Down Expand Up @@ -71,10 +77,17 @@ public class ExamDeletionService {

private final QuizPoolRepository quizPoolRepository;

private final BuildJobRepository buildJobRepository;

private final PostRepository postRepository;

private final AnswerPostRepository answerPostRepository;

public ExamDeletionService(ExerciseDeletionService exerciseDeletionService, ParticipationService participationService, CacheManager cacheManager, UserRepository userRepository,
ExamRepository examRepository, AuditEventRepository auditEventRepository, StudentExamRepository studentExamRepository, GradingScaleRepository gradingScaleRepository,
StudentParticipationRepository studentParticipationRepository, ChannelRepository channelRepository, ChannelService channelService,
ExamLiveEventRepository examLiveEventRepository, QuizPoolRepository quizPoolRepository) {
ExamLiveEventRepository examLiveEventRepository, QuizPoolRepository quizPoolRepository, BuildJobRepository buildJobRepository, PostRepository postRepository,
AnswerPostRepository answerPostRepository) {
this.exerciseDeletionService = exerciseDeletionService;
this.participationService = participationService;
this.cacheManager = cacheManager;
Expand All @@ -88,6 +101,9 @@ public ExamDeletionService(ExerciseDeletionService exerciseDeletionService, Part
this.channelService = channelService;
this.examLiveEventRepository = examLiveEventRepository;
this.quizPoolRepository = quizPoolRepository;
this.buildJobRepository = buildJobRepository;
this.postRepository = postRepository;
this.answerPostRepository = answerPostRepository;
}

/**
Expand Down Expand Up @@ -240,4 +256,37 @@ public void deleteTestRun(Long testRunId) {
log.info("Request to delete Test Run {}", testRunId);
studentExamRepository.deleteById(testRunId);
}

/**
* Get the exam deletion summary for the given exam.
*
* @param examId the ID of the exam for which the deletion summary should be fetched
* @return the exam deletion summary
*/
Strohgelaender marked this conversation as resolved.
Show resolved Hide resolved
public ExamDeletionSummaryDTO getExamDeletionSummary(@NotNull long examId) {
Exam exam = examRepository.findOneWithEagerExercisesGroupsAndStudentExams(examId);
long numberOfBuilds = 0;
for (ExerciseGroup exerciseGroup : exam.getExerciseGroups()) {
var programmingExercises = exerciseGroup.getExercises().stream().filter(exercise -> ExerciseType.PROGRAMMING.equals(exercise.getExerciseType())).toList();

for (Exercise exercise : programmingExercises) {
numberOfBuilds += buildJobRepository.countBuildJobsByExerciseId(exercise.getId());
}
}
ole-ve marked this conversation as resolved.
Show resolved Hide resolved
Channel channel = channelRepository.findChannelByExamId(examId);
Long conversationId = channel.getId();

List<Post> posts = postRepository.findAllByConversationId(conversationId);
long numberOfCommunicationPosts = posts.size();
long numberOfAnswerPosts = answerPostRepository.countAnswerPostsByPostIdIn(posts.stream().map(Post::getId).toList());
ole-ve marked this conversation as resolved.
Show resolved Hide resolved

List<StudentExam> studentExams = studentExamRepository.findAllByExamId(examId);
ole-ve marked this conversation as resolved.
Show resolved Hide resolved
long numberRegisteredStudents = studentExams.size();

long notStartedExams = studentExams.stream().filter(studentExam -> !studentExam.isStarted()).count();
long startedExams = studentExams.stream().filter(studentExam -> studentExam.isStarted() && !studentExam.isSubmitted()).count();
long submittedExams = studentExams.stream().filter(StudentExam::isSubmitted).count();
ole-ve marked this conversation as resolved.
Show resolved Hide resolved

return new ExamDeletionSummaryDTO(numberOfBuilds, numberOfCommunicationPosts, numberOfAnswerPosts, numberRegisteredStudents, notStartedExams, startedExams, submittedExams);
}
}
19 changes: 19 additions & 0 deletions src/main/java/de/tum/in/www1/artemis/web/rest/ExamResource.java
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
import de.tum.in.www1.artemis.service.util.TimeLogUtil;
import de.tum.in.www1.artemis.web.rest.dto.CourseWithIdDTO;
import de.tum.in.www1.artemis.web.rest.dto.ExamChecklistDTO;
import de.tum.in.www1.artemis.web.rest.dto.ExamDeletionSummaryDTO;
ole-ve marked this conversation as resolved.
Show resolved Hide resolved
import de.tum.in.www1.artemis.web.rest.dto.ExamInformationDTO;
import de.tum.in.www1.artemis.web.rest.dto.ExamScoresDTO;
import de.tum.in.www1.artemis.web.rest.dto.ExamUserDTO;
Expand Down Expand Up @@ -1321,4 +1322,22 @@ public ResponseEntity<Set<SuspiciousExamSessionsDTO>> getAllSuspiciousExamSessio
analyzeSessionsIpOutsideOfRange);
return ResponseEntity.ok(examSessionService.retrieveAllSuspiciousExamSessionsByExamId(examId, options, Optional.ofNullable(ipSubnet)));
}

/**
* GET /courses/{courseId}/exams/{examId}/deletion-summary : Get a summary of the deletion of an exam.
*
* @param courseId the id of the course
* @param examId the id of the exam
ole-ve marked this conversation as resolved.
Show resolved Hide resolved
*
* @return the ResponseEntity with status 200 (OK) and with body a summary of the deletion of the exam
*/
@GetMapping("courses/{courseId}/exams/{examId}/deletion-summary")
@EnforceAtLeastInstructor
public ResponseEntity<ExamDeletionSummaryDTO> getDeletionSummary(@PathVariable long courseId, @PathVariable long examId) {
log.debug("REST request to get deletion summary for exam : {}", examId);
Course course = courseRepository.findByIdElseThrow(courseId);
authCheckService.checkHasAtLeastRoleInCourseElseThrow(Role.INSTRUCTOR, course, null);
ole-ve marked this conversation as resolved.
Show resolved Hide resolved

return ResponseEntity.ok(examDeletionService.getExamDeletionSummary(examId));
}
ole-ve marked this conversation as resolved.
Show resolved Hide resolved
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package de.tum.in.www1.artemis.web.rest.dto;

import com.fasterxml.jackson.annotation.JsonInclude;

@JsonInclude(JsonInclude.Include.NON_EMPTY)
public record ExamDeletionSummaryDTO(long numberOfBuilds, long numberOfCommunicationPosts, long numberOfAnswerPosts, long numberRegisteredStudents, long numberNotStartedExams,
long numberStartedExams, long numberSubmittedExams) {
}
9 changes: 9 additions & 0 deletions src/main/webapp/app/entities/exam-deletion-summary.model.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
export interface ExamDeletionSummaryDTO {
numberOfBuilds: number;
numberOfCommunicationPosts: number;
numberOfAnswerPosts: number;
numberRegisteredStudents: number;
numberNotStartedExams: number;
numberStartedExams: number;
numberSubmittedExams: number;
}
10 changes: 10 additions & 0 deletions src/main/webapp/app/exam/manage/exam-management.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import { EntityTitleService, EntityType } from 'app/shared/layouts/navbar/entity
import { ExamExerciseStartPreparationStatus } from 'app/exam/manage/student-exams/student-exams.component';
import { Exercise } from 'app/entities/exercise.model';
import { ExamWideAnnouncementEvent } from 'app/exam/participate/exam-participation-live-events.service';
import { ExamDeletionSummaryDTO } from 'app/entities/exam-deletion-summary.model';

type EntityResponseType = HttpResponse<Exam>;
type EntityArrayResponseType = HttpResponse<Exam[]>;
Expand Down Expand Up @@ -208,6 +209,15 @@ export class ExamManagementService {
);
}

/**
* Returns a summary for the exam providing information potentially relevant for the deletion.
* @param courseId The course id.
* @param examId The exam id.
ole-ve marked this conversation as resolved.
Show resolved Hide resolved
*/
getDeletionSummary(courseId: number, examId: number): Observable<HttpResponse<ExamDeletionSummaryDTO>> {
return this.http.get<ExamDeletionSummaryDTO>(`${this.resourceUrl}/${courseId}/exams/${examId}/deletion-summary`, { observe: 'response' });
}

/**
* Delete an exam on the server using a DELETE request.
* @param courseId The course id.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,8 @@ <h2 id="exam-detail-title">
jhiDeleteButton
[buttonSize]="buttonSize"
[entityTitle]="exam.title || ''"
entitySummaryTitle="artemisApp.examManagement.delete.summary.title"
[entitySummary]="examSummary"
deleteQuestion="artemisApp.examManagement.delete.question"
deleteConfirmationText="artemisApp.examManagement.delete.typeNameToConfirm"
(delete)="deleteExam(exam.id!)"
Expand Down
68 changes: 68 additions & 0 deletions src/main/webapp/app/exam/manage/exams/exam-detail.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ import { GradeType } from 'app/entities/grading-scale.model';
import { DetailOverviewSection, DetailType } from 'app/detail-overview-list/detail-overview-list.component';
import { ArtemisDurationFromSecondsPipe } from 'app/shared/pipes/artemis-duration-from-seconds.pipe';
import { scrollToTopOfPage } from 'app/shared/util/utils';
import { ExerciseType } from 'app/entities/exercise.model';
import { ExamDeletionSummaryDTO } from 'app/entities/exam-deletion-summary.model';

@Component({
selector: 'jhi-exam-detail',
Expand Down Expand Up @@ -52,6 +54,8 @@ export class ExamDetailComponent implements OnInit, OnDestroy {

examDetailSections: DetailOverviewSection[];

examSummary: { [key: string]: unknown } = {};
ole-ve marked this conversation as resolved.
Show resolved Hide resolved

constructor(
private route: ActivatedRoute,
private artemisMarkdown: ArtemisMarkdownService,
Expand Down Expand Up @@ -83,6 +87,9 @@ export class ExamDetailComponent implements OnInit, OnDestroy {
this.canHaveBonus = gradingSystemResponse.body.gradeType === GradeType.GRADE;
}
});

this.setExistingSummaryEntries();
this.fetchAndSetExamDeletionSummary();
ole-ve marked this conversation as resolved.
Show resolved Hide resolved
});
}

Expand Down Expand Up @@ -160,4 +167,65 @@ export class ExamDetailComponent implements OnInit, OnDestroy {
error: (error: HttpErrorResponse) => this.dialogErrorSource.next(error.message),
});
}

private setExistingSummaryEntries() {
const numberOfProgrammingExerciseParticipations =
this.exam.exerciseGroups
?.flatMap((e) => e.exercises)
.filter((e) => e?.type === ExerciseType.PROGRAMMING)
.map((e) => e?.numberOfParticipations ?? 0)
.reduce((a, b) => a + b, 0) ?? 0;
ole-ve marked this conversation as resolved.
Show resolved Hide resolved

const numberOfExercisesPerType = new Map<ExerciseType, number>();
this.exam.exerciseGroups?.forEach((exerciseGroup) => {
exerciseGroup.exercises?.forEach((exercise) => {
if (exercise.type === undefined) {
return;
}
const oldValue = numberOfExercisesPerType.get(exercise.type) ?? 0;
numberOfExercisesPerType.set(exercise.type, oldValue + 1);
});
});

const numberOfExerciseGroups = this.exam.exerciseGroups?.length ?? 0;
const isTestExam = this.exam.testExam ?? false;
const isTestCourse = this.exam.course?.testCourse ?? false;

this.examSummary = {
...this.examSummary,
'artemisApp.examManagement.delete.summary.numberExerciseGroups': numberOfExerciseGroups,
'artemisApp.examManagement.delete.summary.numberProgrammingExercises': numberOfExercisesPerType.get(ExerciseType.PROGRAMMING),
'artemisApp.examManagement.delete.summary.numberModelingExercises': numberOfExercisesPerType.get(ExerciseType.MODELING),
'artemisApp.examManagement.delete.summary.numberTextExercises': numberOfExercisesPerType.get(ExerciseType.TEXT),
'artemisApp.examManagement.delete.summary.numberFileUploadExercises': numberOfExercisesPerType.get(ExerciseType.FILE_UPLOAD),
'artemisApp.examManagement.delete.summary.numberQuizExercises': numberOfExercisesPerType.get(ExerciseType.QUIZ),
'artemisApp.examManagement.delete.summary.numberRepositories': numberOfProgrammingExerciseParticipations,
'artemisApp.examManagement.delete.summary.isTestExam': isTestExam,
'artemisApp.examManagement.delete.summary.isTestCourse': isTestCourse,
};
}

fetchAndSetExamDeletionSummary() {
this.examManagementService.getDeletionSummary(this.exam.course!.id!, this.exam.id!).subscribe({
next: (res: HttpResponse<ExamDeletionSummaryDTO>) => {
const summary = res.body;

if (summary === null) {
return;
}

this.examSummary = {
...this.examSummary,
'artemisApp.examManagement.delete.summary.numberBuilds': summary.numberOfBuilds,
'artemisApp.examManagement.delete.summary.numberRegisteredStudents': summary.numberRegisteredStudents,
'artemisApp.examManagement.delete.summary.numberNotStartedExams': summary.numberNotStartedExams,
'artemisApp.examManagement.delete.summary.numberStartedExams': summary.numberStartedExams,
'artemisApp.examManagement.delete.summary.numberSubmittedExams': summary.numberSubmittedExams,
'artemisApp.examManagement.delete.summary.numberCommunicationPosts': summary.numberOfCommunicationPosts,
'artemisApp.examManagement.delete.summary.numberAnswerPosts': summary.numberOfAnswerPosts,
};
},
error: (error: HttpErrorResponse) => this.dialogErrorSource.next(error.message),
});
}
ole-ve marked this conversation as resolved.
Show resolved Hide resolved
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import { ButtonSize, ButtonType } from 'app/shared/components/button.component';
export class DeleteButtonDirective implements OnInit {
@Input() entityTitle?: string;
@Input() deleteQuestion: string;
@Input() entitySummaryTitle?: string;
@Input() entitySummary?: { [key: string]: unknown } = {};
ole-ve marked this conversation as resolved.
Show resolved Hide resolved
@Input() translateValues: { [key: string]: unknown } = {};
@Input() deleteConfirmationText: string;
@Input() buttonSize: ButtonSize = ButtonSize.SMALL;
Expand Down Expand Up @@ -73,6 +75,8 @@ export class DeleteButtonDirective implements OnInit {
translateValues: this.translateValues,
deleteConfirmationText: this.deleteConfirmationText,
additionalChecks: this.additionalChecks,
entitySummaryTitle: this.entitySummaryTitle,
entitySummary: this.entitySummary,
actionType: this.actionType,
buttonType: this.buttonType,
delete: this.delete,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,23 @@ <h4 class="modal-title">
</div>
<div class="modal-body">
<p [jhiTranslate]="deleteQuestion" [translateValues]="translateValues">Are you sure you want to delete?</p>

@if (entitySummaryTitle) {
<b [jhiTranslate]="entitySummaryTitle">Summary</b>
ole-ve marked this conversation as resolved.
Show resolved Hide resolved
}
ole-ve marked this conversation as resolved.
Show resolved Hide resolved
@if (entitySummary) {
<ul>
@for (summaryKey of objectKeys(entitySummary); track summaryKey; let i = $index) {
@if (entitySummary[summaryKey] !== null) {
ole-ve marked this conversation as resolved.
Show resolved Hide resolved
<li>
<span [jhiTranslate]="summaryKey">{{ summaryKey }}</span
ole-ve marked this conversation as resolved.
Show resolved Hide resolved
>: <span>{{ entitySummary[summaryKey] }}</span>
</li>
}
}
</ul>
}

ole-ve marked this conversation as resolved.
Show resolved Hide resolved
@if (additionalChecks) {
ole-ve marked this conversation as resolved.
Show resolved Hide resolved
<div>
ole-ve marked this conversation as resolved.
Show resolved Hide resolved
@for (checkKey of objectKeys(additionalChecks); track checkKey; let i = $index) {
ole-ve marked this conversation as resolved.
Show resolved Hide resolved
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ export class DeleteDialogComponent implements OnInit, OnDestroy {
@ViewChild('deleteForm', { static: true }) deleteForm: NgForm;

deleteQuestion: string;
entitySummaryTitle?: string;
entitySummary?: { [key: string]: unknown } = {};
ole-ve marked this conversation as resolved.
Show resolved Hide resolved
translateValues: { [key: string]: unknown } = {};
deleteConfirmationText: string;
requireConfirmationOnlyForAdditionalChecks: boolean;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,12 @@ export class DeleteDialogData {
// i18n key, that will be translated
deleteQuestion: string;

// i18n key, that will be translated
entitySummaryTitle?: string;

// summary of the deletion. Key is i18n key, value is the value that will be displayed
entitySummary?: { [key: string]: unknown };
ole-ve marked this conversation as resolved.
Show resolved Hide resolved

// parameters used for the delete question
translateValues: { [key: string]: unknown };

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ export class DeleteDialogService {
this.modalRef.componentInstance.translateValues = { ...deleteDialogData.translateValues, title: deleteDialogData.entityTitle };
this.modalRef.componentInstance.deleteConfirmationText = deleteDialogData.deleteConfirmationText;
this.modalRef.componentInstance.additionalChecks = deleteDialogData.additionalChecks;
this.modalRef.componentInstance.entitySummaryTitle = deleteDialogData.entitySummaryTitle;
this.modalRef.componentInstance.entitySummary = deleteDialogData.entitySummary;
this.modalRef.componentInstance.actionType = deleteDialogData.actionType;
this.modalRef.componentInstance.buttonType = deleteDialogData.buttonType;
this.modalRef.componentInstance.delete = deleteDialogData.delete;
Expand Down
Loading
Loading