Skip to content

Feat 120 assigment dashboard#142

Open
karimouf wants to merge 49 commits intodevfrom
feat-120-assigment_dashboard
Open

Feat 120 assigment dashboard#142
karimouf wants to merge 49 commits intodevfrom
feat-120-assigment_dashboard

Conversation

@karimouf
Copy link
Copy Markdown
Collaborator

@karimouf karimouf commented Mar 31, 2026

Main Description

Implemented an Assignment Dashboard flow that shifts submission handling from admin-only/manual import to assignment-based self-service uploads, enabling both admins and users to manage submissions and revision workflows.


User Features

  • Create assignments and assign to roles
  • Edit / Copy / Delete / Close assignments
  • View submissions per assignment
  • Submit multiple revisions
  • Replace/Delete submissions (if not used in a study)
  • View and manage assignment-bound submissions
  • Submission metadata support (description)
  • Study usage tracking via studyUsageCount
  • Assignment-specific views for submissions
  • Max revisions slider (including unlimited option)

System Features

  • Assignment Data Model

    • title, description, public
    • studyId, workflowId, userId
    • start, end, closed
    • validationConfigurationId
    • assignedRoleIds
    • parentAssignmentId, previousSubmissionAssignmentId
    • allowReUpload, maxRevisions
    • deleted, deletedAt, createdAt, updatedAt
  • Submission Model Updates

    • name, description (metadata)
    • assignmentId (linkage)
  • Access Control

    • Own + public visibility
    • Admin: full access
    • Owner-only actions (Edit/Delete/Share)
  • Submission Pipeline

    • Assignment-based uploads
    • Revision chain enforcement
  • Validation & Rules

    • Validation before persistence
    • Upload only when open (admin override)
    • Re-upload controlled via configuration
  • Revision Control

    • Max revision limits
    • Standard naming (revision X)
  • Study Protection

    • Prevents unsafe replace/delete using studyUsageCount

Known Limitations

  • User assignment view still missing some features (pending alignment/decision)

karimouf and others added 30 commits March 17, 2026 14:53
karimouf and others added 18 commits April 6, 2026 18:36
…cation

Feat 145 assignments email notification
Copy link
Copy Markdown
Collaborator

@dennis-zyska dennis-zyska left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you, nice and fast implementation, I made some comments for improvements. Note that I didn't run the branch yet, so the feedback is only on the code. There are also some merge conflicts.

Comment thread backend/db/migrations/20260316122741-create-assignment.js
Comment thread backend/db/migrations/20260316122741-create-assignment.js
Comment thread backend/db/migrations/20260316122741-create-assignment.js
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't we add this in the assignment creation migration? As long it is not merged to dev, I think it would be fine to do so. I'm also thinking, maybe it directly make sense here to adapt it also with an additional table instead of an array. Arrays in db tables are always a bad idea (also see https://en.wikipedia.org/wiki/Database_normalization)

Comment thread backend/db/models/assignment.js
},
},
methods: {
isAssignmentOwner(assignment) {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can directly do it in the compute. I know it is used twice, but I think here it is more important to directly be able to see what is compared

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should not call it AdminAssignmentsView.vue, better would be to have right, that we give admins to use this. In that way we can in the future in principle give this also another role and keep this more general

assignmentTable() {
return this.assignments.map((assignment) => ({
...assignment,
isOwner: this.isAssignmentOwner(assignment),
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

here I would also remove the function and show it directly, because of the clearness

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wdym by show it directly? i feel it's clear enough

<Card title="Submissions">
<template #headerElements>
<div class="btn-group gap-2">
<BasicButton
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where are all the remove buttons and functionalities? I didn't find it, in which dashboard?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

which butotn are you refferring too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants