Skip to content
This repository has been archived by the owner on Sep 4, 2023. It is now read-only.

Commit

Permalink
Add initial Web API project including relevant changes (#93)
Browse files Browse the repository at this point in the history
Resolve issues caused by rebasing

Fix merge issues

Homepage (#74)

* Created Page model and Service interface

* Created PageHttpService.cs

* Added GetPageImages method

* Changed GetPageImages so that it replaces the img src with the base64 string of the image.

* Added persona to word exporter

* Added dispose

* Removed redundant code and renamed method

* Wrapped HttpRequestMessage in try catch block to ensure that the request gets disposed even when an error is thrown.

* Changed HttpClient to protected, renamed HTMLUrl to HtmlUrl to match code convention, modified Httpservices and changed FileService to iEnumerable<byte>.

* Changed to using

* Change on previous commit

* fix

* Removed generic exception

* fix

* Added throw exception to suppress testing error.

Feat/58 unit testing poc (#73)

* Release v1.0.0 (#41)

* Change formats type to `string` and split with comma separator

* Use root configuration instead of configuration section

* Fix exceptions not properly displaying in the console

* Add all module item types according to documentation

* Update application demo GIF

* Create code-analysis.yml

* Remove comments and enable additional queries

* Removed push from code-analysis.yml workflow

* Typo code-analysis.yml

* Added support for a Word export option

* Added footer Epsilon Credits

* Created helper class with reformat functions

* Reformat code

* Improved helper functions, Found that they can be added to records :-)

* Reformat files

* string interpolation

* Feature/cleanup (#40)

* Remove obsolete Epsilon.Http.Abstractions project

* Fix invalid serializable implementation

* Disable unused method return value hint

* Change exception to more appropriate one

* Update Grade score description

* Prevent null grades from exporting

* Reduce cognitive complexity to acceptable level

* Move logging call

* Reduce nesting

* Move project name and repository uri to constants

* Fix nullability warnings

* Remove unused class

* Use ?: operator and move constants to top level of class

* Reduce loop complexity

* Use project name constant in output name export option

* Update README.md application demo gif

* Add supported formats to README.md

Co-authored-by: Jelle Maas <typiqally@gmail.com>

* POC Open XML SDK

* Update

* Add KPI format and structure

* Added module names to document

* Testing the build and structure of exel files.

* Testing release deployment script.

* Delete file

* POC for excel export

* Code reformat

* Abstracted format logic from exporters to main logic

* Remove typo

* Remove unused variable

* Headers added

* Code cleanup

* Merge

* Removal nullability warnings

* Removal nullability warnings

* Removal tasks/awaits because they dont have nay use atm.

* Removal tasks/awaits because they dont have nay use atm.

* Add exporters return type

* Added memoryStream return type for ConsoleModuleExporter

* Remove unused ExportOptions from ConsoleModuleExporter

* Clean up old merge files

* Update continuous-integration.yml

* Add tests for HttpService, Exporter and ExportDataPackager

* Update continuous-integration.yml

* 'Var' is everything

* Update continuous-integration.yml

* Created unit test for CanvasModuleCollectionFetcher GetAll method

* Renamed unit test

* Bugfix

* Merged feat/42 into feat/58

* Refactored ExcelModuleExporter tests to WordModuleExporter tests

---------

Co-authored-by: Neal Geilen <info@nealgeilen.nl>
Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: Sven Hansen <76601644+1SvenHansen@users.noreply.github.com>

Add download Word file endpoint

Change classes to records & add poc endpoints

Create controllers and endpoints

Add decaying average logic to the frontend (#86)

* Add multi threading

* Restyle KPI Table and cleanup code

* Rename to correspond to definitions

* Reformat code

* Add loading icon

* Decrease personal development graph width

* Add decaying average to front-end

* Rename styling entries to conform with coding conventions and reformat code

* Use colors from domain

* Small cleanup changes

* Eslint enforcements updates

* CI testing

* CI testing

* Bugfixes

* Hardcoded preliminary version of the dashboard with functional term buttons. Ready for demo skrr skrr

* Fix competence profile being empty and cleanup code

* Make personal development height the same as competence graph

* Use different order for terms

* Remove centering

* Show toolbar

* changes of commands to pnpm

* Set version and package manager

* Add a readme

* First POC for moving DecayingAverage logic to frontend

* Moved the DecayingAverage.ts to the frontend

* Removal backed code of decayingAverage

* Fronted changes

* Merge

* Trying

* POC decaying average

* Cleanup

* Add abstraction for competence outcome results

* Removal of backend Decaying average calculations

* Calculating decaying average in the frontend

* Frontend implementation of decaying average

* Import change

* code cleanup

* code cleanup

* Graph changes on term selection

* Implementation PersonalDevelopmentGraph.vue

* Warning fixes

* Mastery level indication in PersonalDevelopmentGraph.vue

* Fixed the mess

* Change AssessedAt to SubmittedAt

* Added comments

* Cleanup code

* MOved functions inside mount function

* Changed function names

* Changes and removed unused file

* Project setting changes

---------

Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: jan.fojtik <jan.fojtik@indicia.nl>

Make dashboard frontend improvements (#83)

* Add multi threading

* Restyle KPI Table and cleanup code

* Rename to correspond to definitions

* Reformat code

* Add loading icon

* Decrease personal development graph width

* Add decaying average to front-end

* Rename styling entries to conform with coding conventions and reformat code

* Use colors from domain

* Small cleanup changes

* Eslint enforcements updates

* CI testing

* CI testing

* Bugfixes

* Hardcoded preliminary version of the dashboard with functional term buttons. Ready for demo skrr skrr

* Fix competence profile being empty and cleanup code

* Make personal development height the same as competence graph

* Use different order for terms

* Remove centering

* Show toolbar

* changes of commands to pnpm

* Set version and package manager

* Add a readme

* Selected button highglight

* Update README.md

* Cleanup project and update PNPM lock file

* Add prettier plugin and update code to conform to coding guidelines

* Add JavaScript to code analysis action

* Perform code analysis on all pull requests

* Add null checking on cert and key

* Add separate jobs for setup, building and linting

* Install PNPM in setup job

* Fix unknown cache path

* Install PNPM for build and lint jobs

* Remove redundant setup step and add install to both lint and build steps

---------

Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: jan.fojtik <jan.fojtik@indicia.nl>

Add support for component based documents (EpsilonComponents) (#89)

* Initial component architecture for JSON and Word export

* Added architecture for single point of component data retrieval and Word convertion

* Typo

* Cleanup component architecture and modify Word export to return OpenXML

* Add coding guidelines enforcement (#85)

* Add initial coding guidelines and fix where necessary

* Enforce code styling and update code where necessary

* Remove duplicate .editorconfig entries

* Add code analysis setup to CI

* Add missing checkout step

* Update incorrect action version tag

* Remove incompatible analysis step

* Push code style offense to validate CI pipeline

* Remove code style violation

* Add global.json

* Add support for dynamic component converters

* Removed Word component merging logic from controller to WordDownloader class

* Remve redundant method

* Remove accidental document

* Remove redundant models and interfaces

* Fix persona images not being added as Base64 (#84)

* Made some adjustments that the pictures in the persona get converted to Base64 strings versus loading it remotely from Canvas (as the access key is only valid for a limited time period)

* Add coding guidelines enforcement (#85)

* Add initial coding guidelines and fix where necessary

* Enforce code styling and update code where necessary

* Remove duplicate .editorconfig entries

* Add code analysis setup to CI

* Add missing checkout step

* Update incorrect action version tag

* Remove incompatible analysis step

* Push code style offense to validate CI pipeline

* Remove code style violation

* Add global.json

* Made a couple of changes based on recommendations made in the merge request.

---------

Co-authored-by: Jelle Maas <typiqally@gmail.com>

* Fix exporters no longer working correctly (#88)

* Temporarily fix paginator not working correctly

* Set format names to uppercase

* Fix stream being disposed before usage

* Fix homepage returning null when no images are present

* Cleanup Word downloader

* Change CLI project namespace to allow for additional projects

* Add initial Web API project

* Create controllers and endpoints

* Transform abstract class to interface

* Change classes to records & add poc endpoints

* Add download Word file endpoint

* Typo

* Add initial frontend code

* Add competence profile data model (#76)

* Initial proof of concept for competence profile data model

* Refactor competence profile return type

* Created endpoint with updated HboIDomain and Mockdata. Also created GraphQL endpoint for student data

* Cleanup records to seperate GraphQL folder

* Fix GraphQL records

---------

Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: Sven Hansen <76601644+1SvenHansen@users.noreply.github.com>

* Link submission query with competence profile endpoint (#79)

* Added Professional development

* Rename namespace to correspond with coding guidelines

* Separate records into different files

* Rename Value to Name to correspond with domain

* Rename Value to Level to correspond with domain

* Add professional skills to domain

* Add short name to architectural layer and professional skills

* Rename properties in competence profile random data filler

* Rename CompetenceProfileOutcome to ProfessionalTaskOutcome

* Add Professional skill outcome to competence profile

* Use singular name

* Use id references instead of name values

* Use type keyword

* Add submissions from all courses from student to competence profile transformation

* Fix merge issues

* Add task and skill outcomes to competence profile return type

* Fetch terms from canvas

* Remove redundant imports

* Change default application url

* Prevent browser from launching on every restart

* Cleanup code

* Add filter enrolment term function

* Add terms to competence profile

* Remove unused terms function

* Added filter on professional outcomes and sorting

* Removed unused things

* V0.1

* Defining colors for elements

* Remove obsolete styling

* Update pnpm lock file

* Add Vue router

* Resolve ESLint warnings

* Add authorization view and controller

* Use controller templating for route

* A lot of stuff

* A lot of stuff

* Working

* Set it all to vue 3 supported format

* Fix import path

* Add CORS policy

* Realtime user data

* Add terms to competence profile

* Cleanup code and improve competence profile converter

* Filter on PostedAt value

---------

Co-authored-by: Tara <tarawillink@gmail.com>
Co-authored-by: Sven <svenroermond@hotmail.com>
Co-authored-by: Neal Geilen <info@nealgeilen.nl>

* Add performance dashboard frontend interface (#81)

* Added Professional development

* Rename namespace to correspond with coding guidelines

* Separate records into different files

* Rename Value to Name to correspond with domain

* Rename Value to Level to correspond with domain

* Add professional skills to domain

* Add short name to architectural layer and professional skills

* Rename properties in competence profile random data filler

* Rename CompetenceProfileOutcome to ProfessionalTaskOutcome

* Add Professional skill outcome to competence profile

* Use singular name

* Use id references instead of name values

* Use type keyword

* Add submissions from all courses from student to competence profile transformation

* Fix merge issues

* Add task and skill outcomes to competence profile return type

* Fetch terms from canvas

* Remove redundant imports

* Change default application url

* Prevent browser from launching on every restart

* Cleanup code

* V0.1

* Defining colors for elements

* Remove obsolete styling

* Update pnpm lock file

* Add Vue router

* Resolve ESLint warnings

* Add authorization view and controller

* Use controller templating for route

* A lot of stuff

* A lot of stuff

* Working

* Set it all to vue 3 supported format

* Fix import path

* Add CORS policy

* Realtime user data

* Bugfixes

* Add filter enrolment term function

* Add terms to competence profile

* Remove unused terms function

* Added filter on professional outcomes and sorting

* Removed unused things

* Realtime user data

* Add terms to competence profile

* Cleanup code and improve competence profile converter

* Filter on PostedAt value

* Added frontend grid & colors

---------

Co-authored-by: Tara <tarawillink@gmail.com>
Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: Sven <svenroermond@hotmail.com>
Co-authored-by: Eline <elinevooijs@outlook.com>

* Add decaying average calculations (#80)

* initial version of the decaying average functionality

* Added Professional development

* Rename namespace to correspond with coding guidelines

* Separate records into different files

* Rename Value to Name to correspond with domain

* Rename Value to Level to correspond with domain

* Add professional skills to domain

* Add short name to architectural layer and professional skills

* Rename properties in competence profile random data filler

* Rename CompetenceProfileOutcome to ProfessionalTaskOutcome

* Add Professional skill outcome to competence profile

* Use singular name

* Use id references instead of name values

* Use type keyword

* re-adding decaying average files and logic

* Add submissions from all courses from student to competence profile transformation

* Fix merge issues

* Add task and skill outcomes to competence profile return type

* Fetch terms from canvas

* Remove redundant imports

* Change default application url

* Prevent browser from launching on every restart

* Cleanup code

* Add filter enrolment term function

* Add terms to competence profile

* Remove unused terms function

* Added filter on professional outcomes and sorting

* Removed unused things

* V0.1

* Defining colors for elements

* Remove obsolete styling

* Update pnpm lock file

* Add Vue router

* Resolve ESLint warnings

* Add authorization view and controller

* Use controller templating for route

* A lot of stuff

* A lot of stuff

* Working

* Set it all to vue 3 supported format

* Fix import path

* Add CORS policy

* Realtime user data

* Add terms to competence profile

* Cleanup code and improve competence profile converter

* Filter on PostedAt value

* initial version of the decaying average functionality

* re-adding decaying average files and logic

* Decaying average calculation functionality supporting both ArchitectureLayer and Skill outcomes

* Decaying average calculation functional per layer per activity and skills are independent of layers

---------

Co-authored-by: jan.fojtik <jan.fojtik@indicia.nl>
Co-authored-by: Tara <tarawillink@gmail.com>
Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: Sven <svenroermond@hotmail.com>
Co-authored-by: Neal Geilen <info@nealgeilen.nl>

* Fix to not all learning outcomes getting retrieved (#82)

* Attempt to fix not all learning outcomes getting retrieved

* Use submission histories instead of rubric assessments directly

* Ensure rubric assessments nodes has elements

* Add performance dashboard frontend interface (#81)

* Added Professional development

* Rename namespace to correspond with coding guidelines

* Separate records into different files

* Rename Value to Name to correspond with domain

* Rename Value to Level to correspond with domain

* Add professional skills to domain

* Add short name to architectural layer and professional skills

* Rename properties in competence profile random data filler

* Rename CompetenceProfileOutcome to ProfessionalTaskOutcome

* Add Professional skill outcome to competence profile

* Use singular name

* Use id references instead of name values

* Use type keyword

* Add submissions from all courses from student to competence profile transformation

* Fix merge issues

* Add task and skill outcomes to competence profile return type

* Fetch terms from canvas

* Remove redundant imports

* Change default application url

* Prevent browser from launching on every restart

* Cleanup code

* V0.1

* Defining colors for elements

* Remove obsolete styling

* Update pnpm lock file

* Add Vue router

* Resolve ESLint warnings

* Add authorization view and controller

* Use controller templating for route

* A lot of stuff

* A lot of stuff

* Working

* Set it all to vue 3 supported format

* Fix import path

* Add CORS policy

* Realtime user data

* Bugfixes

* Add filter enrolment term function

* Add terms to competence profile

* Remove unused terms function

* Added filter on professional outcomes and sorting

* Removed unused things

* Realtime user data

* Add terms to competence profile

* Cleanup code and improve competence profile converter

* Filter on PostedAt value

* Added frontend grid & colors

---------

Co-authored-by: Tara <tarawillink@gmail.com>
Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: Sven <svenroermond@hotmail.com>
Co-authored-by: Eline <elinevooijs@outlook.com>

* Add decaying average calculations (#80)

* initial version of the decaying average functionality

* Added Professional development

* Rename namespace to correspond with coding guidelines

* Separate records into different files

* Rename Value to Name to correspond with domain

* Rename Value to Level to correspond with domain

* Add professional skills to domain

* Add short name to architectural layer and professional skills

* Rename properties in competence profile random data filler

* Rename CompetenceProfileOutcome to ProfessionalTaskOutcome

* Add Professional skill outcome to competence profile

* Use singular name

* Use id references instead of name values

* Use type keyword

* re-adding decaying average files and logic

* Add submissions from all courses from student to competence profile transformation

* Fix merge issues

* Add task and skill outcomes to competence profile return type

* Fetch terms from canvas

* Remove redundant imports

* Change default application url

* Prevent browser from launching on every restart

* Cleanup code

* Add filter enrolment term function

* Add terms to competence profile

* Remove unused terms function

* Added filter on professional outcomes and sorting

* Removed unused things

* V0.1

* Defining colors for elements

* Remove obsolete styling

* Update pnpm lock file

* Add Vue router

* Resolve ESLint warnings

* Add authorization view and controller

* Use controller templating for route

* A lot of stuff

* A lot of stuff

* Working

* Set it all to vue 3 supported format

* Fix import path

* Add CORS policy

* Realtime user data

* Add terms to competence profile

* Cleanup code and improve competence profile converter

* Filter on PostedAt value

* initial version of the decaying average functionality

* re-adding decaying average files and logic

* Decaying average calculation functionality supporting both ArchitectureLayer and Skill outcomes

* Decaying average calculation functional per layer per activity and skills are independent of layers

---------

Co-authored-by: jan.fojtik <jan.fojtik@indicia.nl>
Co-authored-by: Tara <tarawillink@gmail.com>
Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: Sven <svenroermond@hotmail.com>
Co-authored-by: Neal Geilen <info@nealgeilen.nl>

* Correct HBO-i domain layer order

* Add performance dashboard frontend interface (#81)

* Added Professional development

* Rename namespace to correspond with coding guidelines

* Separate records into different files

* Rename Value to Name to correspond with domain

* Rename Value to Level to correspond with domain

* Add professional skills to domain

* Add short name to architectural layer and professional skills

* Rename properties in competence profile random data filler

* Rename CompetenceProfileOutcome to ProfessionalTaskOutcome

* Add Professional skill outcome to competence profile

* Use singular name

* Use id references instead of name values

* Use type keyword

* Add submissions from all courses from student to competence profile transformation

* Fix merge issues

* Add task and skill outcomes to competence profile return type

* Fetch terms from canvas

* Remove redundant imports

* Change default application url

* Prevent browser from launching on every restart

* Cleanup code

* V0.1

* Defining colors for elements

* Remove obsolete styling

* Update pnpm lock file

* Add Vue router

* Resolve ESLint warnings

* Add authorization view and controller

* Use controller templating for route

* A lot of stuff

* A lot of stuff

* Working

* Set it all to vue 3 supported format

* Fix import path

* Add CORS policy

* Realtime user data

* Bugfixes

* Add filter enrolment term function

* Add terms to competence profile

* Remove unused terms function

* Added filter on professional outcomes and sorting

* Removed unused things

* Realtime user data

* Add terms to competence profile

* Cleanup code and improve competence profile converter

* Filter on PostedAt value

* Added frontend grid & colors

---------

Co-authored-by: Tara <tarawillink@gmail.com>
Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: Sven <svenroermond@hotmail.com>
Co-authored-by: Eline <elinevooijs@outlook.com>

* Add decaying average calculations (#80)

* initial version of the decaying average functionality

* Added Professional development

* Rename namespace to correspond with coding guidelines

* Separate records into different files

* Rename Value to Name to correspond with domain

* Rename Value to Level to correspond with domain

* Add professional skills to domain

* Add short name to architectural layer and professional skills

* Rename properties in competence profile random data filler

* Rename CompetenceProfileOutcome to ProfessionalTaskOutcome

* Add Professional skill outcome to competence profile

* Use singular name

* Use id references instead of name values

* Use type keyword

* re-adding decaying average files and logic

* Add submissions from all courses from student to competence profile transformation

* Fix merge issues

* Add task and skill outcomes to competence profile return type

* Fetch terms from canvas

* Remove redundant imports

* Change default application url

* Prevent browser from launching on every restart

* Cleanup code

* Add filter enrolment term function

* Add terms to competence profile

* Remove unused terms function

* Added filter on professional outcomes and sorting

* Removed unused things

* V0.1

* Defining colors for elements

* Remove obsolete styling

* Update pnpm lock file

* Add Vue router

* Resolve ESLint warnings

* Add authorization view and controller

* Use controller templating for route

* A lot of stuff

* A lot of stuff

* Working

* Set it all to vue 3 supported format

* Fix import path

* Add CORS policy

* Realtime user data

* Add terms to competence profile

* Cleanup code and improve competence profile converter

* Filter on PostedAt value

* initial version of the decaying average functionality

* re-adding decaying average files and logic

* Decaying average calculation functionality supporting both ArchitectureLayer and Skill outcomes

* Decaying average calculation functional per layer per activity and skills are independent of layers

---------

Co-authored-by: jan.fojtik <jan.fojtik@indicia.nl>
Co-authored-by: Tara <tarawillink@gmail.com>
Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: Sven <svenroermond@hotmail.com>
Co-authored-by: Neal Geilen <info@nealgeilen.nl>

* Attempt to fix not all learning outcomes getting retrieved

* Use submission histories instead of rubric assessments directly

* Ensure rubric assessments nodes has elements

* Correct HBO-i domain layer order

---------

Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: Tara <tarawillink@gmail.com>
Co-authored-by: Sven <svenroermond@hotmail.com>
Co-authored-by: Eline <elinevooijs@outlook.com>
Co-authored-by: jendafojtik <83012368+jendafojtik@users.noreply.github.com>
Co-authored-by: jan.fojtik <jan.fojtik@indicia.nl>

* Initial component architecture for JSON and Word export

* Added architecture for single point of component data retrieval and Word convertion

* Typo

* Cleanup component architecture and modify Word export to return OpenXML

* Add support for dynamic component converters

* Removed Word component merging logic from controller to WordDownloader class

* Remve redundant method

* Remove accidental document

* Remove redundant models and interfaces

* Cleanup Word downloader

* Fix code analysis issues

* Fix incorrect interface reference

* Remove CLI projects and its dependencies

* Rename Epsilon component classes

* Reformat records

* Remove obsolete test

* Rename TResponse to TComponent

* Remove redundant export data

* Remove redundant interface

* Add service collection extensions for components

* Rework component converters to be included in component models

* Move domain logic in controller to separate services

* Move component name to attribute and rename to competence component

* Remove duplicate package reference

* Move HttpService class to Canvas project

* Remove unused constants

* Modify persona page to accommodate new component architecture (#91)

* Created PersonaPage component for the new architecture.

* fix feedback sven

* Cleanup code

* Modify architecture to force adding Word components instead of creating them

* Add using statement to ensure stream is disposed

---------

Co-authored-by: Jelle Maas <typiqally@gmail.com>

* Add initial KPI matrix component (#87)

* Created KpiMatrix component

* Added modules and fixed comments

* Fixed an issue where outcomes where duplicate

* Created KPIMatrix in word document

* Fixed all remaining issues.

* Merge conflicts

* Fixed MR requests

* Changed course to allcourses

* File restructure

* Revised coding structure. Assignments that are not yest graded are also now included

* Merged files in new structure

* Colored rows

* "Simplified"

* Move HttpService class to Canvas project

* Added legend and changed "GradeStatus" structure

* Remove unused constants

* Modify persona page to accommodate new component architecture (#91)

* Created PersonaPage component for the new architecture.

* fix feedback sven

* Cleanup code

* Modify architecture to force adding Word components instead of creating them

* Add using statement to ensure stream is disposed

---------

Co-authored-by: Jelle Maas <typiqally@gmail.com>

* Move HttpService class to Canvas project

* Remove unused constants

* Modify persona page to accommodate new component architecture (#91)

* Created PersonaPage component for the new architecture.

* fix feedback sven

* Cleanup code

* Modify architecture to force adding Word components instead of creating them

* Add using statement to ensure stream is disposed

---------

Co-authored-by: Jelle Maas <typiqally@gmail.com>

* Created KpiMatrix component

* Added modules and fixed comments

* Merge conflicts

* File restructure

* Revised coding structure. Assignments that are not yest graded are also now included

* Created KpiMatrix component

* Added modules and fixed comments

* Merge conflicts

* File restructure

* Revised coding structure. Assignments that are not yest graded are also now included

* Added legend and changed "GradeStatus" structure

* Added extra grade type

* Added legend to json result

* Working order

* startDate & endDate implementation for document generator

* POC working

* Created KpiMatrix component

* Added modules and fixed comments

* Fixed an issue where outcomes where duplicate

* Created KPIMatrix in word document

* Fixed all remaining issues.

* Merge conflicts

* Fixed MR requests

* Changed course to allcourses

* File restructure

* Revised coding structure. Assignments that are not yest graded are also now included

* Merged files in new structure

* Colored rows

* "Simplified"

* Added legend and changed "GradeStatus" structure

* Created KpiMatrix component

* Added modules and fixed comments

* Merge conflicts

* File restructure

* Revised coding structure. Assignments that are not yest graded are also now included

* Created KpiMatrix component

* Added modules and fixed comments

* Merge conflicts

* File restructure

* Revised coding structure. Assignments that are not yest graded are also now included

* Added legend and changed "GradeStatus" structure

* Added extra grade type

* Added legend to json result

* Working order

* startDate & endDate implementation for document generator

* POC working

* changes

* Lint fixes

* Lint fixes

* Cleanup code and update coding guidelines

* Change outcome grade statuses

* Cleanup code

---------

Co-authored-by: Neal Geilen <info@nealgeilen.nl>
Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: Koen Janssen <6256259+koen253janssen@users.noreply.github.com>

---------

Co-authored-by: Sven <svenroermond@hotmail.com>
Co-authored-by: Koen Janssen <6256259+koen253janssen@users.noreply.github.com>
Co-authored-by: Sven Hansen <76601644+1SvenHansen@users.noreply.github.com>
Co-authored-by: Sven Hansen <76601644+SyntaxSven@users.noreply.github.com>
Co-authored-by: Tara <tarawillink@gmail.com>
Co-authored-by: Neal Geilen <info@nealgeilen.nl>
Co-authored-by: Eline <elinevooijs@outlook.com>
Co-authored-by: jendafojtik <83012368+jendafojtik@users.noreply.github.com>
Co-authored-by: jan.fojtik <jan.fojtik@indicia.nl>
Co-authored-by: Jasper123pyah <73039915+Jasper123pyah@users.noreply.github.com>

Fix to not all learning outcomes getting retrieved (#82)

* Attempt to fix not all learning outcomes getting retrieved

* Use submission histories instead of rubric assessments directly

* Ensure rubric assessments nodes has elements

* Add performance dashboard frontend interface (#81)

* Added Professional development

* Rename namespace to correspond with coding guidelines

* Separate records into different files

* Rename Value to Name to correspond with domain

* Rename Value to Level to correspond with domain

* Add professional skills to domain

* Add short name to architectural layer and professional skills

* Rename properties in competence profile random data filler

* Rename CompetenceProfileOutcome to ProfessionalTaskOutcome

* Add Professional skill outcome to competence profile

* Use singular name

* Use id references instead of name values

* Use type keyword

* Add submissions from all courses from student to competence profile transformation

* Fix merge issues

* Add task and skill outcomes to competence profile return type

* Fetch terms from canvas

* Remove redundant imports

* Change default application url

* Prevent browser from launching on every restart

* Cleanup code

* V0.1

* Defining colors for elements

* Remove obsolete styling

* Update pnpm lock file

* Add Vue router

* Resolve ESLint warnings

* Add authorization view and controller

* Use controller templating for route

* A lot of stuff

* A lot of stuff

* Working

* Set it all to vue 3 supported format

* Fix import path

* Add CORS policy

* Realtime user data

* Bugfixes

* Add filter enrolment term function

* Add terms to competence profile

* Remove unused terms function

* Added filter on professional outcomes and sorting

* Removed unused things

* Realtime user data

* Add terms to competence profile

* Cleanup code and improve competence profile converter

* Filter on PostedAt value

* Added frontend grid & colors

---------

Co-authored-by: Tara <tarawillink@gmail.com>
Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: Sven <svenroermond@hotmail.com>
Co-authored-by: Eline <elinevooijs@outlook.com>

* Add decaying average calculations (#80)

* initial version of the decaying average functionality

* Added Professional development

* Rename namespace to correspond with coding guidelines

* Separate records into different files

* Rename Value to Name to correspond with domain

* Rename Value to Level to correspond with domain

* Add professional skills to domain

* Add short name to architectural layer and professional skills

* Rename properties in competence profile random data filler

* Rename CompetenceProfileOutcome to ProfessionalTaskOutcome

* Add Professional skill outcome to competence profile

* Use singular name

* Use id references instead of name values

* Use type keyword

* re-adding decaying average files and logic

* Add submissions from all courses from student to competence profile transformation

* Fix merge issues

* Add task and skill outcomes to competence profile return type

* Fetch terms from canvas

* Remove redundant imports

* Change default application url

* Prevent browser from launching on every restart

* Cleanup code

* Add filter enrolment term function

* Add terms to competence profile

* Remove unused terms function

* Added filter on professional outcomes and sorting

* Removed unused things

* V0.1

* Defining colors for elements

* Remove obsolete styling

* Update pnpm lock file

* Add Vue router

* Resolve ESLint warnings

* Add authorization view and controller

* Use controller templating for route

* A lot of stuff

* A lot of stuff

* Working

* Set it all to vue 3 supported format

* Fix import path

* Add CORS policy

* Realtime user data

* Add terms to competence profile

* Cleanup code and improve competence profile converter

* Filter on PostedAt value

* initial version of the decaying average functionality

* re-adding decaying average files and logic

* Decaying average calculation functionality supporting both ArchitectureLayer and Skill outcomes

* Decaying average calculation functional per layer per activity and skills are independent of layers

---------

Co-authored-by: jan.fojtik <jan.fojtik@indicia.nl>
Co-authored-by: Tara <tarawillink@gmail.com>
Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: Sven <svenroermond@hotmail.com>
Co-authored-by: Neal Geilen <info@nealgeilen.nl>

* Correct HBO-i domain layer order

* Add performance dashboard frontend interface (#81)

* Added Professional development

* Rename namespace to correspond with coding guidelines

* Separate records into different files

* Rename Value to Name to correspond with domain

* Rename Value to Level to correspond with domain

* Add professional skills to domain

* Add short name to architectural layer and professional skills

* Rename properties in competence profile random data filler

* Rename CompetenceProfileOutcome to ProfessionalTaskOutcome

* Add Professional skill outcome to competence profile

* Use singular name

* Use id references instead of name values

* Use type keyword

* Add submissions from all courses from student to competence profile transformation

* Fix merge issues

* Add task and skill outcomes to competence profile return type

* Fetch terms from canvas

* Remove redundant imports

* Change default application url

* Prevent browser from launching on every restart

* Cleanup code

* V0.1

* Defining colors for elements

* Remove obsolete styling

* Update pnpm lock file

* Add Vue router

* Resolve ESLint warnings

* Add authorization view and controller

* Use controller templating for route

* A lot of stuff

* A lot of stuff

* Working

* Set it all to vue 3 supported format

* Fix import path

* Add CORS policy

* Realtime user data

* Bugfixes

* Add filter enrolment term function

* Add terms to competence profile

* Remove unused terms function

* Added filter on professional outcomes and sorting

* Removed unused things

* Realtime user data

* Add terms to competence profile

* Cleanup code and improve competence profile converter

* Filter on PostedAt value

* Added frontend grid & colors

---------

Co-authored-by: Tara <tarawillink@gmail.com>
Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: Sven <svenroermond@hotmail.com>
Co-authored-by: Eline <elinevooijs@outlook.com>

* Add decaying average calculations (#80)

* initial version of the decaying average functionality

* Added Professional development

* Rename namespace to correspond with coding guidelines

* Separate records into different files

* Rename Value to Name to correspond with domain

* Rename Value to Level to correspond with domain

* Add professional skills to domain

* Add short name to architectural layer and professional skills

* Rename properties in competence profile random data filler

* Rename CompetenceProfileOutcome to ProfessionalTaskOutcome

* Add Professional skill outcome to competence profile

* Use singular name

* Use id references instead of name values

* Use type keyword

* re-adding decaying average files and logic

* Add submissions from all courses from student to competence profile transformation

* Fix merge issues

* Add task and skill outcomes to competence profile return type

* Fetch terms from canvas

* Remove redundant imports

* Change default application url

* Prevent browser from launching on every restart

* Cleanup code

* Add filter enrolment term function

* Add terms to competence profile

* Remove unused terms function

* Added filter on professional outcomes and sorting

* Removed unused things

* V0.1

* Defining colors for elements

* Remove obsolete styling

* Update pnpm lock file

* Add Vue router

* Resolve ESLint warnings

* Add authorization view and controller

* Use controller templating for route

* A lot of stuff

* A lot of stuff

* Working

* Set it all to vue 3 supported format

* Fix import path

* Add CORS policy

* Realtime user data

* Add terms to competence profile

* Cleanup code and improve competence profile converter

* Filter on PostedAt value

* initial version of the decaying average functionality

* re-adding decaying average files and logic

* Decaying average calculation functionality supporting both ArchitectureLayer and Skill outcomes

* Decaying average calculation functional per layer per activity and skills are independent of layers

---------

Co-authored-by: jan.fojtik <jan.fojtik@indicia.nl>
Co-authored-by: Tara <tarawillink@gmail.com>
Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: Sven <svenroermond@hotmail.com>
Co-authored-by: Neal Geilen <info@nealgeilen.nl>

* Attempt to fix not all learning outcomes getting retrieved

* Use submission histories instead of rubric assessments directly

* Ensure rubric assessments nodes has elements

* Correct HBO-i domain layer order

---------

Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: Tara <tarawillink@gmail.com>
Co-authored-by: Sven <svenroermond@hotmail.com>
Co-authored-by: Eline <elinevooijs@outlook.com>
Co-authored-by: jendafojtik <83012368+jendafojtik@users.noreply.github.com>
Co-authored-by: jan.fojtik <jan.fojtik@indicia.nl>

Add decaying average calculations (#80)

* initial version of the decaying average functionality

* Added Professional development

* Rename namespace to correspond with coding guidelines

* Separate records into different files

* Rename Value to Name to correspond with domain

* Rename Value to Level to correspond with domain

* Add professional skills to domain

* Add short name to architectural layer and professional skills

* Rename properties in competence profile random data filler

* Rename CompetenceProfileOutcome to ProfessionalTaskOutcome

* Add Professional skill outcome to competence profile

* Use singular name

* Use id references instead of name values

* Use type keyword

* re-adding decaying average files and logic

* Add submissions from all courses from student to competence profile transformation

* Fix merge issues

* Add task and skill outcomes to competence profile return type

* Fetch terms from canvas

* Remove redundant imports

* Change default application url

* Prevent browser from launching on every restart

* Cleanup code

* Add filter enrolment term function

* Add terms to competence profile

* Remove unused terms function

* Added filter on professional outcomes and sorting

* Removed unused things

* V0.1

* Defining colors for elements

* Remove obsolete styling

* Update pnpm lock file

* Add Vue router

* Resolve ESLint warnings

* Add authorization view and controller

* Use controller templating for route

* A lot of stuff

* A lot of stuff

* Working

* Set it all to vue 3 supported format

* Fix import path

* Add CORS policy

* Realtime user data

* Add terms to competence profile

* Cleanup code and improve competence profile converter

* Filter on PostedAt value

* initial version of the decaying average functionality

* re-adding decaying average files and logic

* Decaying average calculation functionality supporting both ArchitectureLayer and Skill outcomes

* Decaying average calculation functional per layer per activity and skills are independent of layers

---------

Co-authored-by: jan.fojtik <jan.fojtik@indicia.nl>
Co-authored-by: Tara <tarawillink@gmail.com>
Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: Sven <svenroermond@hotmail.com>
Co-authored-by: Neal Geilen <info@nealgeilen.nl>

Add performance dashboard frontend interface (#81)

* Added Professional development

* Rename namespace to correspond with coding guidelines

* Separate records into different files

* Rename Value to Name to correspond with domain

* Rename Value to Level to correspond with domain

* Add professional skills to domain

* Add short name to architectural layer and professional skills

* Rename properties in competence profile random data filler

* Rename CompetenceProfileOutcome to ProfessionalTaskOutcome

* Add Professional skill outcome to competence profile

* Use singular name

* Use id references instead of name values

* Use type keyword

* Add submissions from all courses from student to competence profile transformation

* Fix merge issues

* Add task and skill outcomes to competence profile return type

* Fetch terms from canvas

* Remove redundant imports

* Change default application url

* Prevent browser from launching on every restart

* Cleanup code

* V0.1

* Defining colors for elements

* Remove obsolete styling

* Update pnpm lock file

* Add Vue router

* Resolve ESLint warnings

* Add authorization view and controller

* Use controller templating for route

* A lot of stuff

* A lot of stuff

* Working

* Set it all to vue 3 supported format

* Fix import path

* Add CORS policy

* Realtime user data

* Bugfixes

* Add filter enrolment term function

* Add terms to competence profile

* Remove unused terms function

* Added filter on professional outcomes and sorting

* Removed unused things

* Realtime user data

* Add terms to competence profile

* Cleanup code and improve competence profile converter

* Filter on PostedAt value

* Added frontend grid & colors

---------

Co-authored-by: Tara <tarawillink@gmail.com>
Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: Sven <svenroermond@hotmail.com>
Co-authored-by: Eline <elinevooijs@outlook.com>

Link submission query with competence profile endpoint (#79)

* Added Professional development

* Rename namespace to correspond with coding guidelines

* Separate records into different files

* Rename Value to Name to correspond with domain

* Rename Value to Level to correspond with domain

* Add professional skills to domain

* Add short name to architectural layer and professional skills

* Rename properties in competence profile random data filler

* Rename CompetenceProfileOutcome to ProfessionalTaskOutcome

* Add Professional skill outcome to competence profile

* Use singular name

* Use id references instead of name values

* Use type keyword

* Add submissions from all courses from student to competence profile transformation

* Fix merge issues

* Add task and skill outcomes to competence profile return type

* Fetch terms from canvas

* Remove redundant imports

* Change default application url

* Prevent browser from launching on every restart

* Cleanup code

* Add filter enrolment term function

* Add terms to competence profile

* Remove unused terms function

* Added filter on professional outcomes and sorting

* Removed unused things

* V0.1

* Defining colors for elements

* Remove obsolete styling

* Update pnpm lock file

* Add Vue router

* Resolve ESLint warnings

* Add authorization view and controller

* Use controller templating for route

* A lot of stuff

* A lot of stuff

* Working

* Set it all to vue 3 supported format

* Fix import path

* Add CORS policy

* Realtime user data

* Add terms to competence profile

* Cleanup code and improve competence profile converter

* Filter on PostedAt value

---------

Co-authored-by: Tara <tarawillink@gmail.com>
Co-authored-by: Sven <svenroermond@hotmail.com>
Co-authored-by: Neal Geilen <info@nealgeilen.nl>

Add competence profile data model (#76)

* Initial proof of concept for competence profile data model

* Refactor competence profile return type

* Created endpoint with updated HboIDomain and Mockdata. Also created GraphQL endpoint for student data

* Cleanup records to seperate GraphQL folder

* Fix GraphQL records

---------

Co-authored-by: Jelle Maas <typiqally@gmail.com>
Co-authored-by: Sven Hansen <76601644+1SvenHansen@users.noreply.github.com>

Add initial frontend code

Typo

Add download Word file endpoint

Change classes to records & add poc endpoints

Transform abstract class to interface

Create controllers and endpoints

Add initial Web API project

Change CLI project namespace to allow for additional projects
  • Loading branch information
Typiqally committed May 26, 2023
1 parent 74ee45a commit d83abf4
Show file tree
Hide file tree
Showing 138 changed files with 8,105 additions and 1,170 deletions.
5 changes: 4 additions & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,9 @@ dotnet_diagnostic.ca2007.severity = none
# CA1848: Use the LoggerMessage delegates
dotnet_diagnostic.ca1848.severity = none

# CA1826: Do not use Enumerable methods on indexable collections. Instead use the collection directly.
dotnet_diagnostic.ca1826.severity = none

# Code style errors
dotnet_diagnostic.ide0001.severity = error
dotnet_diagnostic.ide0002.severity = error
Expand Down Expand Up @@ -473,7 +476,7 @@ dotnet_diagnostic.ide0041.severity = error
dotnet_diagnostic.ide0042.severity = error
dotnet_diagnostic.ide0044.severity = error
dotnet_diagnostic.ide0045.severity = error
dotnet_diagnostic.ide0046.severity = error
dotnet_diagnostic.ide0046.severity = none
dotnet_diagnostic.ide0047.severity = error
dotnet_diagnostic.ide0048.severity = error
dotnet_diagnostic.ide0049.severity = error
Expand Down
3 changes: 1 addition & 2 deletions .github/workflows/code-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ name: "Code analysis"

on:
pull_request:
branches: [ "master", "develop" ]
schedule:
- cron: '22 18 * * 5'

Expand All @@ -18,7 +17,7 @@ jobs:
strategy:
fail-fast: false
matrix:
language: [ 'csharp' ]
language: [ 'csharp', 'javascript' ]

steps:
- name: Checkout repository
Expand Down
60 changes: 41 additions & 19 deletions .github/workflows/continuous-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,36 +2,58 @@
on: [ pull_request ]

jobs:
setup:
name: Setup
build-backend:
name: Build .NET solution
runs-on: ubuntu-20.04

steps:
- uses: actions/checkout@v2

- name: Setup .NET
uses: actions/setup-dotnet@v1.7.2
- uses: actions/setup-dotnet@v1.7.2
with:
dotnet-version: '6.0.x'
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --no-restore

build:
name: Build
needs: [ setup ]
build-frontend:
name: Build frontend
runs-on: ubuntu-20.04
defaults:
run:
working-directory: Epsilon.Host.Frontend
steps:
- uses: actions/checkout@v2

- name: Restore dependencies
run: dotnet restore

- uses: pnpm/action-setup@v2
with:
version: 7
- uses: actions/setup-node@v3
with:
node-version: 16
cache: 'pnpm'
cache-dependency-path: 'Epsilon.Host.Frontend/pnpm-lock.yaml'
- name: Install modules
run: pnpm install
- name: Build
run: dotnet build --no-restore
run: pnpm build

test:
name: Test
needs: [ setup, build ]
lint-frontend:
name: Lint frontend
runs-on: ubuntu-20.04
defaults:
run:
working-directory: Epsilon.Host.Frontend
steps:
- uses: actions/checkout@v2

- name: Test
run: dotnet test --no-build --verbosity normal
- uses: pnpm/action-setup@v2
with:
version: 7
- uses: actions/setup-node@v3
with:
node-version: 16
cache: 'pnpm'
cache-dependency-path: 'Epsilon.Host.Frontend/pnpm-lock.yaml'
- name: Install modules
run: pnpm install
- name: Perform linting
run: pnpm lint
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -646,4 +646,8 @@ fabric.properties
### VisualStudio Patch ###
# Additional files built by Visual Studio

# End of https://www.toptal.com/developers/gitignore/api/csharp,rider,visualstudio,dotnetcore
# End of https://www.toptal.com/developers/gitignore/api/csharp,rider,visualstudio,dotnetcore

appsettings.json
appsettings.*.json
!appsettings.example.json
8 changes: 8 additions & 0 deletions Epsilon.Abstractions/Component/CompetenceComponentFetcher.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace Epsilon.Abstractions.Component;

public abstract class CompetenceComponentFetcher<TComponent> : ICompetenceComponentFetcher<TComponent> where TComponent : ICompetenceComponent
{
public async Task<ICompetenceComponent> FetchUnknown(DateTime startDate, DateTime endDate) => await Fetch(startDate, endDate);

public abstract Task<TComponent> Fetch(DateTime startDate, DateTime endDate);
}
12 changes: 12 additions & 0 deletions Epsilon.Abstractions/Component/CompetenceComponentNameAttribute.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
namespace Epsilon.Abstractions.Component;

[AttributeUsage(AttributeTargets.Class)]
public sealed class CompetenceComponentNameAttribute : Attribute
{
public CompetenceComponentNameAttribute(string name)
{
Name = name;
}

public string Name { get; }
}
34 changes: 34 additions & 0 deletions Epsilon.Abstractions/Component/CompetenceProfile.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using Epsilon.Abstractions.Model;
using Epsilon.Canvas.Abstractions.Model;

namespace Epsilon.Abstractions.Component;

[CompetenceComponentName("competence_profile")]
public record CompetenceProfile(
IHboIDomain HboIDomain,
IEnumerable<ProfessionalTaskResult> ProfessionalTaskOutcomes,
IEnumerable<ProfessionalSkillResult> ProfessionalSkillOutcomes,
IEnumerable<EnrollmentTerm> Terms
) : ICompetenceWordComponent
{
public void AddToWordDocument(MainDocumentPart mainDocumentPart)
{
// TODO: This is simply an example to show the capability of the component architecture
var body = new Body();

foreach (var enrollmentTerm in Terms)
{
body.AppendChild(
new Paragraph(
new Run(
new Text(enrollmentTerm.Name)
)
)
);
}

mainDocumentPart.Document.AppendChild(body);
}
}
8 changes: 8 additions & 0 deletions Epsilon.Abstractions/Component/ICompetenceComponent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace Epsilon.Abstractions.Component;

#pragma warning disable CA1040
public interface ICompetenceComponent
#pragma warning restore CA1040
{

}
12 changes: 12 additions & 0 deletions Epsilon.Abstractions/Component/ICompetenceComponentFetcher.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
namespace Epsilon.Abstractions.Component;

public interface ICompetenceComponentFetcher
{
public Task<ICompetenceComponent> FetchUnknown(DateTime startDate, DateTime endDate);
}

public interface ICompetenceComponentFetcher<TComponent> : ICompetenceComponentFetcher
where TComponent : ICompetenceComponent
{
public Task<TComponent> Fetch(DateTime startDate, DateTime endDate);
}
8 changes: 8 additions & 0 deletions Epsilon.Abstractions/Component/ICompetenceWordComponent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using DocumentFormat.OpenXml.Packaging;

namespace Epsilon.Abstractions.Component;

public interface ICompetenceWordComponent : ICompetenceComponent
{
public void AddToWordDocument(MainDocumentPart mainDocumentPart);
}
6 changes: 6 additions & 0 deletions Epsilon.Abstractions/Component/KpiMatrixAssignment.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace Epsilon.Abstractions.Component;

public record KpiMatrixAssignment(
string Name,
IEnumerable<KpiMatrixOutcome> Outcomes
);
Loading

0 comments on commit d83abf4

Please sign in to comment.