/tud-dashboard

Dashboard for the assistance system developed as part of the VerDatAs project.

Primary LanguageSCSSGNU General Public License v3.0GPL-3.0

TUD Dashboard

The dashboard for the assistance system developed as part of the VerDatAs project.

Project setup and development

Prerequisites

nvm use # (or `nvm install` if not yet installed)
npm install

Local development

Create a .env.development file in order to specify values for the following variables:

VITE_BACKEND_URL=TAS_BACKEND_URL # the URL of the tud-tas-backend
VITE_PSEUDO_ID=LMS_PSEUDO_ID # the user identification specified by the LMS that is used within the statements
VITE_COURSE_ID=LMS_COURSE_OBJECT_ID # the objectId of the LMS course
VITE_CAN_VIEW_ONLY=true|false # the decision, whether the student or the lecturer view should be displayed
VITE_PREVIEW_MODE=true|false # the decision, whether the preview of the dashboard should be shown (locally, use false)

In order to modify the generic course format that is used for redrawing the knowledge graph, navigate into ./src/utl/InitialEvent.js.

Start compile and hot-reload for development:

npm run dev

Compile and minify for production

npm run build

Lint with ESLint

npm run lint

Type checking

npm run type-check

Development information on the metamodel

The metamodel is specified in the folder src/util/KnowledgeGraph/moddle/resources using the moddle-library:

  • verDatAs.json for the general element and attributes definition as well as
  • verDatAsDi.json for the visual part.

Options for properties

In our metamodel, the following options for properties are used:

  • "isAbstract": true allows to define inheritance.
  • "isMany": true allows nesting elements. The children contain the complete elements, i.e., tags as well as attributes.
  • "isBody": true allows nesting attributes within element tags.
  • "isAttr": true allows defining attributes in String format (similar to values of HTML attributes).

Options for creating elements

The following objects have to be retrieved to execute the described functions.

const canvas = this.diagram.get('canvas')
const moddle = this.diagram.get('moddle')
const modeling = this.diagram.get('modeling')
const elementFactory = this.diagram.get('elementFactory')

Create elements as children of the <verDatAs:knowledgeGraph /> and automatically add a graphical representation of them.

const moduleType = 'verDatAs:Chapter'
const modulePosition = { x: 100, y: 200 }
const rootElement = canvas.getRootElement()
const moduleShape = modeling.createShape(moduleType, modulePosition, rootElement)

Create graphical representations of elements and add them as children of other elements.

const moduleDimensions = { width: 70, height: 70 }
const moduleAttributes = { ...modulePosition, ...moduleDimensions, ...moduleType }
const moduleShape = elementFactory.create('shape', moduleAttributes)
canvas.addShape(moduleShape)

// the Topic has defined a property "modules" with "isMany": true
const existingModules = knowledgeGraphTopic.businessObject?.modules ?? []
existingModules.push(moduleShape.businessObject)
modeling.updateProperties(knowledgeGraphTopic, { modules: existingModules })

Create elements as children of other elements.

// chapterShape was created using "elementFactory.createShape"
const element = moddle.create('verDatAs:ContentPage', pageProperties)
contentPages.push(element)
chapterProperties['contentPages'] = contentPages
modeling.updateProperties(chapterShape, chapterProperties)

Update properties that have defined a "isMany": true relation in combination with "isBody": true.

const priorKnowledgeElements = []
this.priorKnowledgeValue.forEach((elem) => {
  const element = this.diagram.get('moddle').create('verDatAs:PriorKnowledge', {
    elementId: elem.businessObject.id
  })
  priorKnowledgeElements.push(element)
})
const propertyToDefine = {}
propertyToDefine['priorKnowledgeElements'] = priorKnowledgeElements
// "elementToUpdate" is the element for whose the property should be defined
this.diagram.get('modeling').updateProperties(elementToUpdate, propertyToDefine)

Local development with ILIAS

  • The folder of the tud-dashboard should be located within the same folder such as tud-dashboard-plugin.
  • In order to build the application and move it into the plugin, run the following command:
npm run build-move ilias

License

This plugin is licensed under the GPL v3 License (for further information, see LICENSE).

Libraries used

The libraries used in this project are listed in the following table. This information can also be requested by:

npm run extract-licenses

After that the list of libraries used can be found in dist/THIRD-PARTY-tud-dashboard.md.

Name Version License URL
@babel/helper-string-parser 7.24.8 MIT https://github.com/babel/babel
@babel/helper-validator-identifier 7.24.7 MIT https://github.com/babel/babel
@babel/parser 7.25.3 MIT https://github.com/babel/babel
@babel/types 7.25.2 MIT https://github.com/babel/babel
@bpmn-io/diagram-js-ui 0.2.3 MIT https://github.com/bpmn-io/diagram-js-ui
@fortawesome/fontawesome-common-types 6.6.0 MIT https://github.com/FortAwesome/Font-Awesome
@fortawesome/fontawesome-svg-core 6.6.0 MIT https://github.com/FortAwesome/Font-Awesome
@fortawesome/free-solid-svg-icons 6.6.0 (CC-BY-4.0 AND MIT) https://github.com/FortAwesome/Font-Awesome
@fortawesome/vue-fontawesome 3.0.8 MIT https://github.com/FortAwesome/vue-fontawesome
@jridgewell/sourcemap-codec 1.5.0 MIT https://github.com/jridgewell/sourcemap-codec
@types/web-bluetooth 0.0.20 MIT https://github.com/DefinitelyTyped/DefinitelyTyped
@vue/compiler-core 3.4.38 MIT https://github.com/vuejs/core
@vue/compiler-dom 3.4.38 MIT https://github.com/vuejs/core
@vue/compiler-sfc 3.4.38 MIT https://github.com/vuejs/core
@vue/compiler-ssr 3.4.38 MIT https://github.com/vuejs/core
@vue/devtools-api 6.6.3 MIT https://github.com/vuejs/vue-devtools
@vue/reactivity 3.4.38 MIT https://github.com/vuejs/core
@vue/runtime-core 3.4.38 MIT https://github.com/vuejs/core
@vue/runtime-dom 3.4.38 MIT https://github.com/vuejs/core
@vue/server-renderer 3.4.38 MIT https://github.com/vuejs/core
@vue/shared 3.4.38 MIT https://github.com/vuejs/core
@vueuse/core 10.11.1 MIT https://github.com/vueuse/vueuse
@vueuse/core 7.7.1 MIT https://github.com/vueuse/vueuse
@vueuse/metadata 10.11.1 MIT https://github.com/vueuse/vueuse
@vueuse/shared 10.11.1 MIT https://github.com/vueuse/vueuse
@vueuse/shared 7.7.1 MIT https://github.com/vueuse/vueuse
asynckit 0.4.0 MIT https://github.com/alexindigo/asynckit
axios 1.7.4 MIT https://github.com/axios/axios
clsx 2.1.1 MIT https://github.com/lukeed/clsx
combined-stream 1.0.8 MIT https://github.com/felixge/node-combined-stream
component-event 0.2.1 MIT https://github.com/component/event
csstype 3.1.3 MIT https://github.com/frenic/csstype
delayed-stream 1.0.0 MIT https://github.com/felixge/node-delayed-stream
diagram-js-direct-editing 3.0.1 MIT https://github.com/bpmn-io/diagram-js-direct-editing
diagram-js 14.8.0 MIT https://github.com/bpmn-io/diagram-js
didi 10.2.2 MIT https://github.com/nikku/didi
domify 1.4.2 MIT https://github.com/sindresorhus/domify
domify 2.0.0 MIT https://github.com/sindresorhus/domify
entities 4.5.0 BSD-2-Clause https://github.com/fb55/entities
estree-walker 2.0.2 MIT https://github.com/Rich-Harris/estree-walker
follow-redirects 1.15.6 MIT https://github.com/follow-redirects/follow-redirects
form-data 4.0.0 MIT https://github.com/form-data/form-data
htm 3.1.1 Apache-2.0 https://github.com/developit/htm
ids 1.0.5 MIT https://github.com/bpmn-io/ids
inherits-browser 0.1.0 ISC https://github.com/nikku/inherits-browser
inherits 2.0.4 ISC https://github.com/isaacs/inherits
js-base64 3.7.7 BSD-3-Clause https://github.com/dankogai/js-base64
magic-string 0.30.11 MIT https://github.com/rich-harris/magic-string
mime-db 1.52.0 MIT https://github.com/jshttp/mime-db
mime-types 2.1.35 MIT https://github.com/jshttp/mime-types
min-dash 4.2.1 MIT https://github.com/bpmn-io/min-dash
min-dom 4.2.1 MIT https://github.com/bpmn-io/min-dom
min-dom 5.1.1 MIT https://github.com/bpmn-io/min-dom
moddle-xml 11.0.0 MIT https://github.com/bpmn-io/moddle-xml
moddle 7.0.0 MIT https://github.com/bpmn-io/moddle
nanoid 3.3.7 MIT https://github.com/ai/nanoid
object-refs 0.4.0 MIT https://github.com/bpmn-io/object-refs
path-intersection 3.1.0 MIT https://github.com/bpmn-io/path-intersection
picocolors 1.1.0 ISC https://github.com/alexeyraspopov/picocolors
pinia-plugin-persistedstate 3.2.1 MIT https://github.com/prazdevs/pinia-plugin-persistedstate
pinia 2.2.1 MIT https://github.com/vuejs/pinia
postcss 8.4.47 MIT https://github.com/postcss/postcss
postit-js-core 1.1.0 MIT https://github.com/pinussilvestrus/postit-js
preact 10.23.2 MIT https://github.com/preactjs/preact
proxy-from-env 1.1.0 MIT https://github.com/Rob--W/proxy-from-env
saxen 10.0.0 MIT https://github.com/nikku/saxen
source-map-js 1.2.1 BSD-3-Clause https://github.com/7rulnik/source-map-js
tiny-svg 3.1.2 MIT https://github.com/bpmn-io/tiny-svg
tiny-svg 4.1.2 MIT https://github.com/bpmn-io/tiny-svg
to-fast-properties 2.0.0 MIT https://github.com/sindresorhus/to-fast-properties
typescript 5.4.5 Apache-2.0 https://github.com/Microsoft/TypeScript
vue-demi 0.13.11 MIT https://github.com/antfu/vue-demi
vue-demi 0.14.10 MIT https://github.com/antfu/vue-demi
vue-json-pretty 2.4.0 MIT https://github.com/leezng/vue-json-pretty
vue-multiselect 3.0.0 MIT https://github.com/suadelabs/vue-multiselect
vue 3.4.38 MIT https://github.com/vuejs/core
vuejs-confirm-dialog 0.5.2 MIT https://github.com/harmyderoman/vuejs-confirm-dialog