Compare commits

...

141 Commits

Author SHA1 Message Date
Kai Senkowski b60f09b101 Merge branch 'f/formular-aufnahmeantrag' of gitlab.com:fia72-dev/eva_lernsituation into f/formular-aufnahmeantrag 7 years ago
Kai Senkowski 410d292264 theme colors added 7 years ago
Levin Faber 5616e84854
Merge dev 7 years ago
Levin Faber 517e31a638 💚 Update .gitlab-ci.yml 7 years ago
Tobi e0ea0bdce1
📚 Protokoll und Endpoints überarbeitet 7 years ago
Levin Faber 5aca92512f
Fixed ci 7 years ago
Levin Faber a8b6fdba05
Restart host 7 years ago
Levin Faber 9a8e8adafd
change restart host 7 years ago
Levin Faber 7311176cef
gpMerge branch 'f/formular-aufnahmeantrag' of gitlab.com:fia72-dev/eva_lernsituation into f/formular-aufnahmeantrag 7 years ago
Levin Faber 1aa54c18f2
Changed nginx to serve 7 years ago
Kai Senkowski 536dd4b7a7 Update Endpoints.md 7 years ago
Kai Senkowski e4c359fab5 Added Aufnahmeantrag Endpoints.md 7 years ago
Kai Senkowski 6c2e4612eb Merge branch 'f/formular-aufnahmeantrag' of gitlab.com:fia72-dev/eva_lernsituation into f/formular-aufnahmeantrag 7 years ago
Kai Senkowski eef0c6cc02 removed unused imports 7 years ago
Levin Faber a86ca40f60
Merge remote-tracking branch 'origin/develop' into f/formular-aufnahmeantrag 7 years ago
Tobi ba5e6dafcb
📚 Protokoll 2019-06-12 7 years ago
Levin Faber a19b0d05a0
Merge branch 'develop' of gitlab.com:fia72-dev/eva_lernsituation into develop 7 years ago
Levin Faber 4f93a72bea
Cleanup, created PDF 7 years ago
K.A.J 7ecba69ac5 Update PROJEKTSTRUKTURPLAN 7 years ago
K.A.J aff67bb600 Projektstrukturplan hinzufügen 7 years ago
Levin Faber e4f6c38736 :green_hearth: Update .gitlab-ci.yml 7 years ago
Levin Faber 7a3d966022 Merge branch 'develop' into 'f/formular-aufnahmeantrag' 7 years ago
Kai Senkowski 30a174af35 📦 Update package.json version update material UI 7 years ago
Levin Faber 0f644ab9fb 📖 Update Pflichtenheft.md 7 years ago
Levin Faber 3c1969a54e 📝 Update Pflichtenheft.md 7 years ago
Tobi bf985ed0a0
📚 Dokumente 2019-05-06 7 years ago
Levin Faber 3fdc722df7
Merge branch 'develop' of gitlab.com:fia72-dev/eva_lernsituation into develop 7 years ago
Levin Faber db8305a8e2
Added functions and kais work 7 years ago
Tobi 044ebda7df Merge branch 'patch-2' into 'develop' 7 years ago
Levin Faber 9b613c23a9
Merge branch 'develop' of gitlab.com:fia72-dev/eva_lernsituation into develop 7 years ago
Tobi 4daebcf1d5
📚 Dokumente 2019-05-29 7 years ago
Levin Faber 91597f7de4
Pflichtenheft 7 years ago
Tobi 138dda4374
📚 MindMap hinzugefügt 7 years ago
Tobi 0beb7c57ca
📚 Use Case Diagramm aktualisiert 7 years ago
Levin Faber d480a85c82
Pflichtenheft 7 years ago
Tobi fc4f037891
Merge branch 'develop' of gitlab.com:fia72-dev/eva_lernsituation into develop 7 years ago
Tobi 6f904c3e38
🚧 Use Case Diagramm hinzugefügt 7 years ago
K.A.J 2b8de44519 Update Fragenkatalog.md 7 years ago
K.A.J db978f9e90 Create Zeitplan.md 7 years ago
Kai Senkowski df559f1b8d border color changed 7 years ago
Kai Senkowski 39f6fb1b18 instrument checkbox fixed 7 years ago
Kai Senkowski bcbd943dd6 instrument checkbox added 7 years ago
K.A.J cd8005ef79 Merge branch 'develop' of https://gitlab.com/fia72-dev/eva_lernsituation into develop 7 years ago
K.A.J 112447b2dc Create Fragenkatalog.md 7 years ago
Tobi 248b680fe6
📝 Ergebnisse zu Laufzettel ergänzt (2019-05-22) 7 years ago
Kai Senkowski 46f35ff7eb added box shadow to form 7 years ago
Tobi 3abdc43589
Merge branch 'develop' of gitlab.com:fia72-dev/eva_lernsituation into develop 7 years ago
Tobi b1fbad9eab
📚 ER-Diagram aktualisiert 7 years ago
Levin Faber 5409726f67 Update _Dokumente/Ausgearbeitete Dokumente/Endpoints.md 7 years ago
Kai Senkowski 74c2ee475b laufzeit und typ zu selects 7 years ago
Tobi 645eafeb0d
📚 Protokolle 2019-05-22 7 years ago
Tobi e947e20f93
📚 ER-Diagram aktualisiert 7 years ago
Tobi 3edee380b7
📚 ER-Diagram aktualisiert 7 years ago
Tobi ac8ea43d25
📚 ER-Diagram aktualisiert 7 years ago
Kai Senkowski 63e55b8b1f Aufnahmeantrag fromular ergänzt 7 years ago
Levin Faber 0c0d3a3be0 Update _Dokumente/Ausgearbeitete Dokumente/Pflichtenheft.md, README.md files 7 years ago
Levin Faber afa43826b4 Update .gitlab-ci.yml 7 years ago
Levin Faber 17d441ddb1 Merge branch 'f/gitlab-ci-pipelines-einrichten' into 'develop' 7 years ago
Levin Faber bafd52afb2 Update .gitlab-ci.yml 7 years ago
Levin Faber 7f5724a95f Update .gitlab-ci.yml 7 years ago
Kai Senkowski 3baeff8b0a Merge remote-tracking branch 'origin/f/react-grundstruktur' into f/formular-aufnahmeantrag 7 years ago
Kai Senkowski 09f9687dd5 added component Aufnahmeantrag 7 years ago
Levin Faber 0248913e81
WIP 7 years ago
Levin Faber 96bce4fc39
Added Router 7 years ago
Levin Faber 1d2d00d8f8
WIP 7 years ago
Tobi 939dfaafb4
Merge branch 'develop' of gitlab.com:fia72-dev/eva_lernsituation into develop 7 years ago
Tobi e957901597
🚧 EVA ERD Dateien hinzugefügt 7 years ago
Levin Faber 6fb075ecc0
Merge branch 'develop' of gitlab.com:fia72-dev/eva_lernsituation into develop 7 years ago
Levin Faber 60a1c01eb9
Added Paperprot 7 years ago
Tobi 7e23a93410
📝 Protokolle für 2019-05-15 7 years ago
Tobi 337b2f9e7a
Merge branch 'develop' of gitlab.com:fia72-dev/eva_lernsituation into develop 7 years ago
Tobi 18232ee6b3
📝 Protokolle für 2019-05-15 7 years ago
Kai Senkowski 1744b47a86 📝 Update README.md 7 years ago
Levin Faber a890331609 Update .gitlab-ci.yml 7 years ago
Levin Faber 8d9e9e7a44 Merge branch 'f/1-frontend-react-initialisieren' into 'develop' 7 years ago
Kai Senkowski 6dc3854226 🔧 React app name changed 7 years ago
Levin Faber d121318f75
Renamed Dockerfile 7 years ago
Tobi 4536a4ef40 Merge branch 'f/2-backend-asp-net-core-initialisieren' into 'develop' 7 years ago
Tobi b94e0a3de7
🎉 EVABackend .NET Core Projekt initialisiert 7 years ago
Levin Faber b79e566d18 Merge branch 'f/gitlab-ci-pipelines-einrichten' into 'develop' 7 years ago
Levin Faber 02a5e125a2 Update .gitlab-ci.yml 7 years ago
Levin Faber ad6a2404d7 Update .gitlab-ci.yml 7 years ago
Levin Faber 233aa04817 Update .gitlab-ci.yml 7 years ago
Levin Faber 6e63b48163 Update .gitlab-ci.yml 7 years ago
Levin Faber 0b14603366 Update .gitlab-ci.yml 7 years ago
Levin Faber cd887b4fb6 Update .gitlab-ci.yml 7 years ago
Levin Faber 7d439075b6 Update .gitlab-ci.yml 7 years ago
Levin Faber 895a6376b7 Update .gitlab-ci.yml 7 years ago
Levin Faber cd5d32af4d Update .gitlab-ci.yml 7 years ago
Levin Faber 743e32885b Update .gitlab-ci.yml 7 years ago
Levin Faber e6aa36948f Update .gitlab-ci.yml 7 years ago
Levin Faber 786af31d9f
🚚 File permissions 7 years ago
Levin Faber 0eeaeb077d Update .gitlab-ci.yml, Docker/config/restart-host.sh files 7 years ago
Levin Faber b515e5a7a7 Update .gitlab-ci.yml 7 years ago
Levin Faber 93fd8d871e Update .gitlab-ci.yml, Docker/Dockerfile_FE_Host files 7 years ago
Levin Faber 1fde640178 Update .gitlab-ci.yml 7 years ago
Levin Faber f985a69de9 Update .gitlab-ci.yml 7 years ago
Levin Faber ba0ed4a900 Update .gitlab-ci.yml 7 years ago
Levin Faber 4d3422b39d Update .gitlab-ci.yml 7 years ago
Levin Faber 4ccc812f35 Update .gitlab-ci.yml 7 years ago
Levin Faber 3509439dfb Update .gitlab-ci.yml 7 years ago
Levin Faber 6fa231ac3c Update .gitlab-ci.yml 7 years ago
Levin Faber a6f323c8eb Update .gitlab-ci.yml 7 years ago
Levin Faber 479a4d2d81 Update .gitlab-ci.yml 7 years ago
Levin Faber 92bb8351dc Update .gitlab-ci.yml 7 years ago
Levin Faber ac1c31beb7 Update .gitlab-ci.yml 7 years ago
Levin Faber f777c10353 Update .gitlab-ci.yml 7 years ago
Levin Faber abcd2e95fd Update .gitlab-ci.yml 7 years ago
Levin Faber 3e34d3cf1a Update .gitlab-ci.yml 7 years ago
Levin Faber d0a85eb60c Update .gitlab-ci.yml 7 years ago
Levin Faber 2625465071 Update .gitlab-ci.yml 7 years ago
Levin Faber ff38e43576 Update .gitlab-ci.yml 7 years ago
Levin Faber bc4629ea67 Update .gitlab-ci.yml 7 years ago
Levin Faber ff4d67bfe1 Update .gitlab-ci.yml 7 years ago
Levin Faber 849140bd54 Update .gitlab-ci.yml 7 years ago
Levin Faber 1535bb0e21 Update .gitlab-ci.yml 7 years ago
Levin Faber 95ea0e935a Update .gitlab-ci.yml 7 years ago
Levin Faber 30929c60f7 Update .gitlab-ci.yml 7 years ago
Levin Faber f0014a083d 👷 Add new file 7 years ago
Levin Faber 23fb24972e Merge branch 'develop' into 'f/gitlab-ci-pipelines-einrichten' 7 years ago
Levin Faber 819eda375b Merge branch 'f/docker-fe' into 'develop' 7 years ago
Levin Faber e878d571ea
🐳 Added Dockerfile for Build 7 years ago
Levin Faber 63acad363a Merge branch 'f/1-frontend-react-initialisieren' into 'develop' 7 years ago
u14461 3d70291fa9 🎉 React App initialisiert 7 years ago
Levin Faber 6c3fc58051 📝 Update README.md 7 years ago
Levin Faber 49f8e987f7 📝 Update README.md 7 years ago
Tobi e9a84f69a4 Merge branch 'f/docker-fe' into 'develop' 7 years ago
Levin Faber 9f7ba498f5
🐳 Added Dockerfiles, FE Placeholder 7 years ago
Levin Faber 80f04bad40 📝 Update README.md 7 years ago
Levin Faber a60f4338ab 📝 Update README.md 7 years ago
Levin Faber bfe064c04a
Merge branch 'develop' of gitlab.com:fia72-dev/eva_lernsituation into develop 7 years ago
Levin Faber 64666e06eb
🚚 Moved Dokuments, added Frontend and Backend Folder 7 years ago
Tobi 7c66efedae
📝 Vorlage Protokoll angepasst 7 years ago
Tobi 99c0ad580f 📝 Rollenverteilung angepasst 7 years ago
Tobi bdb63ed920 📝 Namen der Teilnehmer korrigiert 7 years ago
Levin Faber 661be5e9b5
📝 Protocol and Roles 7 years ago
Levin Faber e06404fc30
📝 Protokoll Template 7 years ago
Levin Faber b54b4bf845
🚚 Added Folder 7 years ago
Levin Faber b59b103236
📝 Updated Folder structure 7 years ago
Levin Faber 3faa816ab5
📝 Updated Folder structure 7 years ago
Levin Faber 8422cd200f Update README.md 7 years ago
  1. 23
      .gitignore
  2. 74
      .gitlab-ci.yml
  3. 0
      Backend/.gitkeep
  4. 9
      Backend/EVABackend/.dockerignore
  5. 348
      Backend/EVABackend/.gitignore
  6. 25
      Backend/EVABackend/EVABackend.sln
  7. 45
      Backend/EVABackend/EVABackend/Controllers/ValuesController.cs
  8. 20
      Backend/EVABackend/EVABackend/Dockerfile
  9. 20
      Backend/EVABackend/EVABackend/EVABackend.csproj
  10. 24
      Backend/EVABackend/EVABackend/Program.cs
  11. 38
      Backend/EVABackend/EVABackend/Properties/launchSettings.json
  12. 47
      Backend/EVABackend/EVABackend/Startup.cs
  13. 9
      Backend/EVABackend/EVABackend/appsettings.Development.json
  14. 8
      Backend/EVABackend/EVABackend/appsettings.json
  15. 15
      Docker/Dockerfile_FE_Builder.dockerfile
  16. 14
      Docker/Dockerfile_FE_Host.dockerfile
  17. 14
      Docker/config/nginx.conf
  18. 7
      Docker/config/restart-host.sh
  19. 23
      Frontend/.gitignore
  20. 0
      Frontend/.gitkeep
  21. 7
      Frontend/README.md
  22. 12
      Frontend/dist/index.html
  23. 13145
      Frontend/package-lock.json
  24. 34
      Frontend/package.json
  25. BIN
      Frontend/public/favicon.ico
  26. 18
      Frontend/public/index.html
  27. 15
      Frontend/public/manifest.json
  28. 37
      Frontend/src/components/App.js
  29. 376
      Frontend/src/components/Aufnahmeantrag.js
  30. 36
      Frontend/src/components/Login.js
  31. 6
      Frontend/src/index.js
  32. 19
      Frontend/src/style/index.css
  33. 34
      README.md
  34. 0
      _Dokumente/Ausgangsmaterial/LS _MS_Ausgangslage.docx
  35. 0
      _Dokumente/Ausgangsmaterial/LS_MS_Aktivitaeten_und_Dokumente.pdf
  36. 0
      _Dokumente/Ausgangsmaterial/LS_MS_Ausgangslage.pdf
  37. 0
      _Dokumente/Ausgangsmaterial/LS_MS_Beispiel_Lastenheft.pdf
  38. 0
      _Dokumente/Ausgangsmaterial/LS_MS_Laufzettel_v2.pdf
  39. 0
      _Dokumente/Ausgangsmaterial/LS_MS_Material_Kundengespräch_01.docx
  40. 0
      _Dokumente/Ausgangsmaterial/LS_MS_Material_Kundengespräch_01.pdf
  41. 0
      _Dokumente/Ausgangsmaterial/LS_MS_PaperPrototyping.pdf
  42. 0
      _Dokumente/Ausgangsmaterial/LS_MS_Pflichtenheft.pdf
  43. 0
      _Dokumente/Ausgangsmaterial/LS_MS__Beispiel_Pflichtenheft.pdf
  44. 0
      _Dokumente/Ausgangsmaterial/P01_Lernsituation_MS_1.0_FIA7x.ppt
  45. 0
      _Dokumente/Ausgangsmaterial/Pflichtenheftvorlage.doc
  46. 0
      _Dokumente/Ausgangsmaterial/Pflichtenheftvorlage.pdf
  47. 0
      _Dokumente/Ausgangsmaterial/Projektmanagement Kompendium.pdf
  48. BIN
      _Dokumente/Ausgearbeitete Dokumente/EVA ERD Umletino.png
  49. 57
      _Dokumente/Ausgearbeitete Dokumente/EVA ERD Umletino.uxf
  50. BIN
      _Dokumente/Ausgearbeitete Dokumente/EVA Use Case Umletino.png
  51. 24
      _Dokumente/Ausgearbeitete Dokumente/EVA Use Case Umletino.uxf
  52. 193
      _Dokumente/Ausgearbeitete Dokumente/Endpoints.md
  53. 9
      _Dokumente/Ausgearbeitete Dokumente/Fragenkatalog.md
  54. BIN
      _Dokumente/Ausgearbeitete Dokumente/LS Musikschule. PROJEKTSTRUKTURPLAN.pdf
  55. BIN
      _Dokumente/Ausgearbeitete Dokumente/LS Musikschule. PROJEKTSTRUKTURPLAN.xlsx
  56. BIN
      _Dokumente/Ausgearbeitete Dokumente/MindMap.pdf
  57. BIN
      _Dokumente/Ausgearbeitete Dokumente/Papierprototyp_1.pdf
  58. BIN
      _Dokumente/Ausgearbeitete Dokumente/Papierprototyp_2.pdf
  59. 213
      _Dokumente/Ausgearbeitete Dokumente/Pflichtenheft.md
  60. BIN
      _Dokumente/Ausgearbeitete Dokumente/Pflichtenheft.pdf
  61. 11
      _Dokumente/Ausgearbeitete Dokumente/Rollenverteilung.md
  62. 15
      _Dokumente/Ausgearbeitete Dokumente/Wasserfalldiagramm.md
  63. BIN
      _Dokumente/Ausgearbeitete Dokumente/img/Hauptseite.png
  64. BIN
      _Dokumente/Ausgearbeitete Dokumente/img/Hauptseite_Dozent.png
  65. BIN
      _Dokumente/Ausgearbeitete Dokumente/img/Hauptseite_Verwaltung.png
  66. 21
      _Dokumente/Protokolle/2019-05-08_Protokoll.md
  67. 44
      _Dokumente/Protokolle/2019-05-15_Protokoll.md
  68. 19
      _Dokumente/Protokolle/2019-05-22_Protokoll.md
  69. 21
      _Dokumente/Protokolle/2019-05-29_Protokoll.md
  70. 24
      _Dokumente/Protokolle/2019-06-05_Protokoll.md
  71. 26
      _Dokumente/Protokolle/2019-06-12_Protokoll.md
  72. 15
      _Dokumente/Protokolle/Protokoll_Template.md
  73. 361
      package-lock.json

23
.gitignore vendored

@ -0,0 +1,23 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# production
/build
# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*

74
.gitlab-ci.yml

@ -0,0 +1,74 @@
stages:
- build_docker
- build_frontend
build_frontend:
stage: build_frontend
tags:
- docker
image: registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-build
before_script:
- eval $(ssh-agent -s)
- ssh-add <(echo "${DEPLOY_ENV_KEY}")
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
- cp -r Frontend/src/ /workdir/src/
- cp -r Frontend/public/ /workdir/public/
script:
- pwd
- ls -la
- cd /workdir
- npm run build
- ls -la /workdir/build
- ssh $DEPLOY_ENV_USER@$DEPLOY_ENV_TARGET "mkdir -p /home/$DEPLOY_ENV_USER/serve"
- ssh $DEPLOY_ENV_USER@$DEPLOY_ENV_TARGET "rm -rf /home/$DEPLOY_ENV_USER/serve/*"
- ssh $DEPLOY_ENV_USER@$DEPLOY_ENV_TARGET "mkdir -p /home/$DEPLOY_ENV_USER/serve/$CI_COMMIT_REF_NAME"
- rsync --progress -av -e ssh /workdir/build/* $DEPLOY_ENV_USER@$DEPLOY_ENV_TARGET:/home/$DEPLOY_ENV_USER/serve/
only:
changes:
- Frontend/*
environment:
name: deploy
url: https://$DEPLOY_ENV_TARGET
build_docker_host:
stage: build_docker
tags:
- docker-builder
before_script:
- eval $(ssh-agent -s)
- ssh-add <(echo "${DEPLOY_ENV_KEY}")
- mkdir -p ~/.ssh
- echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
- docker info
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
script:
- docker build -f Docker/Dockerfile_FE_Host.dockerfile -t registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-serve .
- docker push registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-serve
- ls -la Docker/config/restart-host.sh
- rsync --progress -av -e ssh Docker/config/restart-host.sh $DEPLOY_ENV_USER@$DEPLOY_ENV_TARGET:/home/$DEPLOY_ENV_USER/restart-host.sh
- ssh $DEPLOY_ENV_USER@$DEPLOY_ENV_TARGET "./restart-host.sh"
only:
changes:
- Docker/Dockerfile_FE_Host.dockerfile
- Docker/config/*
build_docker_builder:
stage: build_docker
tags:
- docker-builder
before_script:
- docker info
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
script:
- docker build -f Docker/Dockerfile_FE_Builder.dockerfile -t registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-build .
- docker push registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-build
only:
changes:
- Docker/Dockerfile_FE_Builder.dockerfile
- Docker/config/*
- Frontend/package.json
- Frontend/package-lock.json
- .gitlab-ci.yml

0
Backend/.gitkeep

9
Backend/EVABackend/.dockerignore

@ -0,0 +1,9 @@
.dockerignore
.env
.git
.gitignore
.vs
.vscode
*/bin
*/obj
**/.toolstarget

348
Backend/EVABackend/.gitignore vendored

@ -0,0 +1,348 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/

25
Backend/EVABackend/EVABackend.sln

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28803.156
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EVABackend", "EVABackend\EVABackend.csproj", "{35629A48-394C-4EE6-B853-1B92641B9FED}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{35629A48-394C-4EE6-B853-1B92641B9FED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{35629A48-394C-4EE6-B853-1B92641B9FED}.Debug|Any CPU.Build.0 = Debug|Any CPU
{35629A48-394C-4EE6-B853-1B92641B9FED}.Release|Any CPU.ActiveCfg = Release|Any CPU
{35629A48-394C-4EE6-B853-1B92641B9FED}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9D649B10-EA35-49B9-BCB5-A989D21D6832}
EndGlobalSection
EndGlobal

45
Backend/EVABackend/EVABackend/Controllers/ValuesController.cs

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
namespace EVABackend.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
[HttpGet("{id}")]
public ActionResult<string> Get(int id)
{
return "value";
}
// POST api/values
[HttpPost]
public void Post([FromBody] string value)
{
}
// PUT api/values/5
[HttpPut("{id}")]
public void Put(int id, [FromBody] string value)
{
}
// DELETE api/values/5
[HttpDelete("{id}")]
public void Delete(int id)
{
}
}
}

20
Backend/EVABackend/EVABackend/Dockerfile

@ -0,0 +1,20 @@
FROM mcr.microsoft.com/dotnet/core/aspnet:2.1-stretch-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:2.1-stretch AS build
WORKDIR /src
COPY ["EVABackend.csproj", "EVABackend/"]
RUN dotnet restore "EVABackend/EVABackend.csproj"
COPY . .
WORKDIR "/src/EVABackend"
RUN dotnet build "EVABackend.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "EVABackend.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "EVABackend.dll"]

20
Backend/EVABackend/EVABackend/EVABackend.csproj

@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<UserSecretsId>81a3ba40-5295-4382-9a09-5339b5d22d08</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.1" PrivateAssets="All" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.1.8" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.7.8" />
</ItemGroup>
</Project>

24
Backend/EVABackend/EVABackend/Program.cs

@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
namespace EVABackend
{
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
}

38
Backend/EVABackend/EVABackend/Properties/launchSettings.json

@ -0,0 +1,38 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:50570",
"sslPort": 44374
}
},
"$schema": "http://json.schemastore.org/launchsettings.json",
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "api/values",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"EVABackend": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "api/values",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
},
"Docker": {
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/api/values",
"httpPort": 50571,
"useSSL": true,
"sslPort": 44375
}
}
}

47
Backend/EVABackend/EVABackend/Startup.cs

@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
namespace EVABackend
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseMvc();
}
}
}

9
Backend/EVABackend/EVABackend/appsettings.Development.json

@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
}

8
Backend/EVABackend/EVABackend/appsettings.json

@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*"
}

15
Docker/Dockerfile_FE_Builder.dockerfile

@ -0,0 +1,15 @@
# Tag: frontend-build
FROM node:10.8-stretch
RUN apt update
RUN apt install -y rsync
RUN mkdir -p /workdir
COPY Frontend/package.json /workdir/package.json
COPY Frontend/package-lock.json /workdir/package-lock.json
WORKDIR /workdir
RUN pwd && ls -la
run npm install

14
Docker/Dockerfile_FE_Host.dockerfile

@ -0,0 +1,14 @@
# Tag: frontend-serve
# FROM nginx
# COPY Docker/config/nginx.conf /etc/nginx/nginx.conf
FROM node:10.8-stretch
WORKDIR /opt/frontend
RUN pwd && ls -la
RUN npm install -g serve
CMD ["serve", "-s", "build"]

14
Docker/config/nginx.conf

@ -0,0 +1,14 @@
events {
worker_connections 1024;
}
http {
server {
listen 80;
root /usr/share/nginx/html;
location / {
autoindex on;
}
}
}

7
Docker/config/restart-host.sh

@ -0,0 +1,7 @@
#! /bin/bash
docker login -u gitlab+deploy-token-66068 -p vD23SzzitUn8y8xGknKz registry.gitlab.com
docker stop eva_frontend_serve
docker rm eva_frontend_serve
docker rmi registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-serve
docker run -d -p 8083:5000 -v /home/gitlab/serve:/opt/frontend/build:ro --name "eva_frontend_serve" registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-serve

23
Frontend/.gitignore vendored

@ -0,0 +1,23 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# production
/build
# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*

0
Frontend/.gitkeep

7
Frontend/README.md

@ -0,0 +1,7 @@
# React App für die EVA_Lernsituatuin
# Pakages
- Material UI
- React Router
- Sentry

12
Frontend/dist/index.html vendored

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Temporäre Seite</title>
</head>
<body>
Hallo bitte geh weg.
</body>
</html>

13145
Frontend/package-lock.json generated

File diff suppressed because it is too large Load Diff

34
Frontend/package.json

@ -0,0 +1,34 @@
{
"name": "lernsituation",
"version": "0.1.0",
"private": true,
"dependencies": {
"@material-ui/core": "^4.0.2",
"@material-ui/icons": "^4.0.1",
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-router-dom": "^5.0.0",
"react-scripts": "3.0.0"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}

BIN
Frontend/public/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

18
Frontend/public/index.html

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8" />
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico" />
<meta
name="viewport"
content="minimum-scale=1, initial-scale=1, width=device-width, shrink-to-fit=no"
/>
<meta name="theme-color" content="#000000" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<title>Lernsituation</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>
</html>

15
Frontend/public/manifest.json

@ -0,0 +1,15 @@
{
"short_name": "Lernsituation",
"name": "EVA_Lernsituation",
"icons": [
{
"src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
}
],
"start_url": ".",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#ffffff"
}

37
Frontend/src/components/App.js

@ -0,0 +1,37 @@
import React, { Component } from "react";
import CssBaseline from "@material-ui/core/CssBaseline";
import { BrowserRouter as Router, Route } from "react-router-dom";
import Login from "./Login.js";
import { Box } from "@material-ui/core";
import Aufnahmeantrag from "./Aufnahmeantrag.js";
import { createMuiTheme, MuiThemeProvider } from "@material-ui/core";
import { green, yellow } from "@material-ui/core/colors";
const theme = createMuiTheme({
palette: {
primary: { main: "#2e294e" },
grey: { main: "#595959" },
danger: { main: "#d90368" },
secondary: { main: "#eadeda" },
text: { main: "#ffffff" }
}
});
class App extends Component {
state = {};
render() {
return (
<MuiThemeProvider theme={theme}>
<CssBaseline />
<Router>
<Box flexDirection="column" width="100%">
<Route path="/login" component={Login} />
<Route path="/aufnahmeantrag" component={Aufnahmeantrag} />
</Box>
</Router>
</MuiThemeProvider>
);
}
}
export default App;

376
Frontend/src/components/Aufnahmeantrag.js

@ -0,0 +1,376 @@
import React, { Component } from "react";
import {
FormControlLabel,
Checkbox,
TextField,
Typography,
Grid,
Fab,
Container,
FormControl,
InputLabel,
MenuItem,
Select,
OutlinedInput
} from "@material-ui/core";
import SendIcon from "@material-ui/icons/Send";
import { withStyles, createStyles } from "@material-ui/core/styles";
const useStyles = createStyles(theme => ({
textField: {
margingLeft: theme.spacing(1),
marginRight: theme.spacing(1)
},
fab: {
margin: theme.spacing(1)
},
form: {
backgroundColor: "rgba(255, 255, 255, 1)",
borderRadius: "5px",
margin: "20px",
padding: "20px",
boxShadow: "0px 0px 5px 0px lightgrey",
border: "1px solid lightgrey"
},
checkbox: {
display: "flex",
alignItems: "center",
height: "100%",
marginLeft: "7px"
},
instruments: {
border: "1px solid #bbb",
borderRadius: "5px",
display: "flex",
flexWrap: "wrap",
padding: "10px"
}
}));
class Aufnahmeantrag extends Component {
state = {
form: {
Name: "",
Vorname: "",
Geburtsdatum: "",
Geburtsort: "",
PLZ: "",
Ort: "",
Strasse: "",
Hausnummer: "",
Telefon: "",
EMail: "",
BLZ: "",
Bankname: "",
KontoNr: "",
Instrument: [],
Ermaessigt: null,
Laufzeit: "",
Typ: ""
},
instruments: [
{ name: "Gitarre", toggle: false },
{ name: "Schlagzeug", toggle: false },
{ name: "Flöte", toggle: false },
{ name: "Trompete", toggle: false },
{ name: "Banjo", toggle: false },
{ name: "Klavier", toggle: false },
{ name: "Orgel", toggle: false },
{ name: "Kazoo", toggle: false }
]
};
handleChange = name => event => {
this.setState({ form: { ...this.state.form, [name]: event.target.value } });
};
handleInstrument = instrument => {
var instruments = this.state.instruments;
var instrumentsArray = [];
instruments.forEach(obj => {
if (obj === instrument) obj.toggle = !obj.toggle;
if (obj.toggle === true) instrumentsArray.push(obj.name);
});
this.setState({
form: { ...this.state.form, Instrument: instrumentsArray }
});
this.setState({ instruments });
};
render() {
const classes = this.props.classes;
return (
<Container maxWidth="md">
<div className={classes.form}>
<Grid container direction="row" justify="center" alignItems="center">
<Grid container spacing={1}>
<Grid item xs={12}>
<Typography align="center" variant="h4">
Aufnahmeantrag
</Typography>
</Grid>
<Grid item sm={6} xs={12}>
<TextField
fullWidth={true}
id="outlined-name"
label="Name"
className={classes.textField}
value={this.state.form.Name}
onChange={this.handleChange("Name")}
margin="normal"
variant="outlined"
/>
</Grid>
<Grid item sm={6} xs={12}>
<TextField
fullWidth={true}
id="outlined-name"
label="Vorname"
className={classes.textField}
value={this.state.form.Vorname}
onChange={this.handleChange("Vorname")}
margin="normal"
variant="outlined"
/>
</Grid>
<Grid item sm={6} xs={12}>
<TextField
fullWidth={true}
id="outlined-name"
label="Geburtsdatum"
className={classes.textField}
value={this.state.form.Geburtsdatum}
onChange={this.handleChange("Geburtsdatum")}
margin="normal"
variant="outlined"
/>
</Grid>
<Grid item sm={6} xs={12}>
<TextField
fullWidth={true}
id="outlined-name"
label="Geburtsort"
className={classes.textField}
value={this.state.form.Geburtsort}
onChange={this.handleChange("Geburtsort")}
margin="normal"
variant="outlined"
/>
</Grid>
<Grid item sm={6} xs={12}>
<TextField
fullWidth={true}
id="outlined-name"
label="PLZ"
className={classes.textField}
value={this.state.form.PLZ}
onChange={this.handleChange("PLZ")}
margin="normal"
variant="outlined"
/>
</Grid>
<Grid item sm={6} xs={12}>
<TextField
fullWidth={true}
id="outlined-name"
label="Ort"
className={classes.textField}
value={this.state.form.Ort}
onChange={this.handleChange("Ort")}
margin="normal"
variant="outlined"
/>
</Grid>
<Grid item sm={6} xs={12}>
<TextField
fullWidth={true}
id="outlined-name"
label="Strasse"
className={classes.textField}
value={this.state.form.Strasse}
onChange={this.handleChange("Strasse")}
margin="normal"
variant="outlined"
/>
</Grid>
<Grid item sm={6} xs={12}>
<TextField
fullWidth={true}
id="outlined-name"
label="Hausnummer"
className={classes.textField}
value={this.state.form.Hausnummer}
onChange={this.handleChange("Hausnummer")}
margin="normal"
variant="outlined"
/>
</Grid>
<Grid item sm={6} xs={12}>
<TextField
fullWidth={true}
id="outlined-name"
label="Telefon"
className={classes.textField}
value={this.state.form.Telefon}
onChange={this.handleChange("Telefon")}
margin="normal"
variant="outlined"
/>
</Grid>
<Grid item sm={6} xs={12}>
<TextField
fullWidth={true}
id="outlined-name"
label="EMail"
className={classes.textField}
value={this.state.form.EMail}
onChange={this.handleChange("EMail")}
margin="normal"
variant="outlined"
/>
</Grid>
<Grid item sm={12} xs={12}>
<Typography align="left" variant="h6">
Instrumente
</Typography>
<div className={classes.instruments}>
{this.state.instruments.map(instrument => (
<FormControlLabel
key={instrument.name}
control={
<Checkbox
checked={instrument.toggle}
onChange={() => this.handleInstrument(instrument)}
value={instrument.name}
color="primary"
/>
}
label={instrument.name}
/>
))}
</div>
</Grid>
<Grid item sm={6} xs={12}>
<FormControl
margin="normal"
fullWidth={true}
variant="outlined"
className={classes.textField}
>
<InputLabel htmlFor="outlined-laufzeit-simple">
Laufzeit
</InputLabel>
<Select
value={this.state.form.Laufzeit}
onChange={this.handleChange("Laufzeit")}
input={
<OutlinedInput
labelWidth={60}
name="laufzeit"
id="outlined-laufzeit-simple"
/>
}
>
<MenuItem value={6}>6 Monate</MenuItem>
<MenuItem value={12}>12 Monate</MenuItem>
</Select>
</FormControl>
</Grid>
<Grid item sm={6} xs={12}>
<FormControl
margin="normal"
fullWidth={true}
variant="outlined"
className={classes.textField}
>
<InputLabel htmlFor="outlined-laufzeit-simple">
Unterichtstyp
</InputLabel>
<Select
value={this.state.form.Typ}
onChange={this.handleChange("Typ")}
input={
<OutlinedInput
labelWidth={95}
name="laufzeit"
id="outlined-laufzeit-simple"
/>
}
>
<MenuItem value={"einzel"}>Einzelunterricht</MenuItem>
<MenuItem value={"band"}>Gruppenunterricht / Band</MenuItem>
</Select>
</FormControl>
</Grid>
<Grid item sm={12} xs={12}>
<div className={classes.checkbox}>
<FormControlLabel
control={
<Checkbox
checked={this.state.form.Ermaessigt}
onChange={() => this.handleChange("Ermaessigt")}
value="Ermaessigt"
color="primary"
/>
}
label="Schüler/Student/Azubi"
/>
</div>
</Grid>
</Grid>
<Grid container spacing={1}>
<Grid item xs={12}>
<Typography align="center" variant="h4">
Bankverbindung
</Typography>
</Grid>
<Grid item sm={6} xs={12}>
<TextField
fullWidth={true}
id="outlined-name"
label="BLZ"
className={classes.textField}
value={this.state.form.BLZ}
onChange={this.handleChange("BLZ")}
margin="normal"
variant="outlined"
/>
</Grid>
<Grid item sm={6} xs={12}>
<TextField
fullWidth={true}
id="outlined-name"
label="Bankname"
className={classes.textField}
value={this.state.form.Bankname}
onChange={this.handleChange("Bankname")}
margin="normal"
variant="outlined"
/>
</Grid>
<Grid item xs={12}>
<TextField
fullWidth={true}
id="outlined-name"
label="KontoNr"
className={classes.textField}
value={this.state.form.KontoNr}
onChange={this.handleChange("KontoNr")}
margin="normal"
variant="outlined"
/>
</Grid>
</Grid>
<Fab color="primary" aria-label="Send" className={classes.fab}>
<SendIcon />
</Fab>
</Grid>
</div>
</Container>
);
}
}
export default withStyles(useStyles)(Aufnahmeantrag);

36
Frontend/src/components/Login.js

@ -0,0 +1,36 @@
import React, { Component } from "react";
import TextField from "@material-ui/core/TextField";
class Login extends Component {
state = {};
render() {
return (
<form>
<TextField
variant="outlined"
margin="normal"
required
fullWidth
id="email"
label="Email Address"
name="email"
autoComplete="email"
autoFocus
/>
<TextField
type="password"
variant="outlined"
margin="normal"
required
fullWidth
id="password"
label="Password"
name="password"
autoComplete="password"
/>
</form>
);
}
}
export default Login;

6
Frontend/src/index.js

@ -0,0 +1,6 @@
import React from "react";
import ReactDOM from "react-dom";
import "./style/index.css";
import App from "./components/App";
ReactDOM.render(<App />, document.getElementById("root"));

19
Frontend/src/style/index.css

@ -0,0 +1,19 @@
body {
margin: 0;
padding: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
"Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
sans-serif;
background-color: rgba(234, 222, 218, 1) !important;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
code {
font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
monospace;
}
html {
background-color: rgba(234, 222, 218, 1);
}

34
README.md

@ -1,14 +1,42 @@
# EVA Lernsituation # EVA Lernsituation
_Levin Faber, Alexej Komnik, Tobias Schiffarth, Kai Senkowski_
## Teilnehmer ## Teilnehmer
* Levin Faber * Levin Faber
* Alexej Komnik * Alexej Komnik
* Tobias Schifffarth * Tobias Schiffarth
* Kai Senkowski * Kai Senkowski
## Organisation ## Organisation
* ALLE Dokumente werden im [Gitlab](https://gitlab.com/fia72-dev/eva_lernsituation) abgelegt * Alle Dokumente werden im [Gitlab](https://gitlab.com/fia72-dev/eva_lernsituation) abgelegt
* Kommunikation erfolgt über [Slack](https://dullidivision.slack.com) * Kommunikation erfolgt über [Slack](https://dullidivision.slack.com)
* Es wird nach dem Wasserfallmodell entwickelt * Es wird nach dem Wasserfallmodell entwickelt
## Kommunikationsplan
* Alle Dokumente werden im [Gitlab](https://gitlab.com/fia72-dev/eva_lernsituation) abgelegt
* Kommunikation erfolgt über [Slack](https://dullidivision.slack.com) oder mündlich in Meetings (es werden Protokolle erstellt)
* Das Arbeiten erfolgt in der Schule und bei Bedarf nach Absprache Remote
* Es wird pro Arbeitstag ein Meeting gehalten, in welchem der aktuelle Status besprochen wird ("Jour fixe")
* Alle offiziellen Kommuniktionen werden von einem am Anfang des Meetings bestimmten Mitarbeiter dokumentiert _(Ordner /Dokumente/Protokolle. Hier liegt eine Vorlage)_
* Die Einhaltung der Kommunikationsrichtlinien wird vom Teamleiter überwacht
## Konzepte
### Infrastruktur
* Alles wird in Dockercontainern deployed
* Server können von Tobi und Levin bereitgestellt werden
* Auf beiden ist eine Docker Installation vorhanden
* Das gebaute FE wird von einem NGINX geserved (registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-serve)
* // Todo backend @Tobi
### Deployment
* Deployed wird über GitLab Pipelines

0
Dokumente_LS_Musikschule/LS _MS_Ausgangslage.docx → _Dokumente/Ausgangsmaterial/LS _MS_Ausgangslage.docx

0
Dokumente_LS_Musikschule/LS_MS_Aktivitaeten_und_Dokumente.pdf → _Dokumente/Ausgangsmaterial/LS_MS_Aktivitaeten_und_Dokumente.pdf

0
Dokumente_LS_Musikschule/LS_MS_Ausgangslage.pdf → _Dokumente/Ausgangsmaterial/LS_MS_Ausgangslage.pdf

0
Dokumente_LS_Musikschule/LS_MS_Beispiel_Lastenheft.pdf → _Dokumente/Ausgangsmaterial/LS_MS_Beispiel_Lastenheft.pdf

0
Dokumente_LS_Musikschule/LS_MS_Laufzettel_v2.pdf → _Dokumente/Ausgangsmaterial/LS_MS_Laufzettel_v2.pdf

0
Dokumente_LS_Musikschule/LS_MS_Material_Kundengespräch_01.docx → _Dokumente/Ausgangsmaterial/LS_MS_Material_Kundengespräch_01.docx

0
Dokumente_LS_Musikschule/LS_MS_Material_Kundengespräch_01.pdf → _Dokumente/Ausgangsmaterial/LS_MS_Material_Kundengespräch_01.pdf

0
Dokumente_LS_Musikschule/LS_MS_PaperPrototyping.pdf → _Dokumente/Ausgangsmaterial/LS_MS_PaperPrototyping.pdf

0
Dokumente_LS_Musikschule/LS_MS_Pflichtenheft.pdf → _Dokumente/Ausgangsmaterial/LS_MS_Pflichtenheft.pdf

0
Dokumente_LS_Musikschule/LS_MS__Beispiel_Pflichtenheft.pdf → _Dokumente/Ausgangsmaterial/LS_MS__Beispiel_Pflichtenheft.pdf

0
Dokumente_LS_Musikschule/P01_Lernsituation_MS_1.0_FIA7x.ppt → _Dokumente/Ausgangsmaterial/P01_Lernsituation_MS_1.0_FIA7x.ppt

0
Dokumente_LS_Musikschule/Pflichtenheftvorlage.doc → _Dokumente/Ausgangsmaterial/Pflichtenheftvorlage.doc

0
Dokumente_LS_Musikschule/Pflichtenheftvorlage.pdf → _Dokumente/Ausgangsmaterial/Pflichtenheftvorlage.pdf

0
Dokumente_LS_Musikschule/Projektmanagement Kompendium.pdf → _Dokumente/Ausgangsmaterial/Projektmanagement Kompendium.pdf

BIN
_Dokumente/Ausgearbeitete Dokumente/EVA ERD Umletino.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

57
_Dokumente/Ausgearbeitete Dokumente/EVA ERD Umletino.uxf

@ -0,0 +1,57 @@
<diagram program="umletino" version="14.3.0"><zoom_level>10</zoom_level><help_text></help_text><element><id>UMLClass</id><coordinates><x>125</x><y>60</y><w>240</w><h>180</h></coordinates><panel_attributes>Person
&lt;&lt;abstract&gt;&gt;
--
_Id_
Name, Vorname
Geburtsdatum, Geburtsort
PLZ, Ort, Strasse
Telefon, EMail
Bankname
BLZ
KontoNr</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>125</x><y>290</y><w>100</w><h>50</h></coordinates><panel_attributes>Schueler
-
IstErmaessigt</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>265</x><y>290</y><w>100</w><h>50</h></coordinates><panel_attributes>Dozent
--
Stundensatz</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>304</x><y>230</y><w>30</w><h>80</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>10;10;10;60</additional_attributes></element><element><id>Relation</id><coordinates><x>164</x><y>230</y><w>30</w><h>80</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>10;10;10;60</additional_attributes></element><element><id>UMLClass</id><coordinates><x>184</x><y>451</y><w>120</w><h>100</h></coordinates><panel_attributes>Kurs
--
_Id_
Name
Laufzeit
Kuendigungsfrist
Bestaetigt</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>634</x><y>361</y><w>100</w><h>80</h></coordinates><panel_attributes>Raum
--
_Nr_
Name
Belegt</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>464</x><y>451</y><w>100</w><h>90</h></coordinates><panel_attributes>Unterricht
--
_Id_
Name
Anfangszeit
Notiz
</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>254</x><y>331</y><w>80</w><h>140</h></coordinates><panel_attributes>m1=1
m2=0..n</panel_attributes><additional_attributes>60;10;10;120</additional_attributes></element><element><id>Relation</id><coordinates><x>164</x><y>331</y><w>90</w><h>140</h></coordinates><panel_attributes>m1=0..n
m2=1..n</panel_attributes><additional_attributes>10;10;60;120</additional_attributes></element><element><id>Relation</id><coordinates><x>294</x><y>491</y><w>190</w><h>40</h></coordinates><panel_attributes>m1=1..n
m2=1</panel_attributes><additional_attributes>170;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>554</x><y>431</y><w>160</w><h>100</h></coordinates><panel_attributes>m1=1
m2=1..n</panel_attributes><additional_attributes>130;10;130;70;10;70</additional_attributes></element><element><id>UMLClass</id><coordinates><x>154</x><y>630</y><w>180</w><h>90</h></coordinates><panel_attributes>UnterrichtTyp
&lt;&lt;enum&gt;&gt;
--
Einzel
Gruppe
Musikalische Früherziehung</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>234</x><y>541</y><w>110</w><h>110</h></coordinates><panel_attributes>*UnterrichtTyp*
m1=1</panel_attributes><additional_attributes>10;90;10;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>464</x><y>271</y><w>100</w><h>120</h></coordinates><panel_attributes>Instrument
&lt;&lt;enum&gt;&gt;
--
Klavier
Schlagzeug
Geige
Gitarre
Band</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>554</x><y>321</y><w>160</w><h>60</h></coordinates><panel_attributes>m1=1..n
m2=1</panel_attributes><additional_attributes>10;10;130;10;130;40</additional_attributes></element><element><id>Relation</id><coordinates><x>354</x><y>311</y><w>130</w><h>40</h></coordinates><panel_attributes>m1=1..n
m2=0..n</panel_attributes><additional_attributes>110;10;10;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>840</x><y>60</y><w>110</w><h>110</h></coordinates><panel_attributes>Antrag
-
Laufzeit
KursId</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>54</x><y>21</y><w>870</w><h>330</h></coordinates><panel_attributes>m1=1
m2=1</panel_attributes><additional_attributes>70;300;10;300;10;10;840;10;840;40</additional_attributes></element><element><id>Relation</id><coordinates><x>324</x><y>161</y><w>590</w><h>550</h></coordinates><panel_attributes>*UnterrichtTyp*
m1=1</panel_attributes><additional_attributes>10;520;570;520;570;10</additional_attributes></element><element><id>Relation</id><coordinates><x>504</x><y>131</y><w>360</w><h>160</h></coordinates><panel_attributes>*Instrumente*
m1=1..n</panel_attributes><additional_attributes>10;140;10;20;340;19</additional_attributes></element><element><id>Relation</id><coordinates><x>294</x><y>351</y><w>190</w><h>150</h></coordinates><panel_attributes>*Instrumente*
m1=1..n</panel_attributes><additional_attributes>170;10;10;130</additional_attributes></element></diagram>

BIN
_Dokumente/Ausgearbeitete Dokumente/EVA Use Case Umletino.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

24
_Dokumente/Ausgearbeitete Dokumente/EVA Use Case Umletino.uxf

@ -0,0 +1,24 @@
<diagram program="umletino" version="14.3.0"><zoom_level>10</zoom_level><element><id>UMLActor</id><coordinates><x>10</x><y>145</y><w>80</w><h>110</h></coordinates><panel_attributes>Verwaltung</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLActor</id><coordinates><x>10</x><y>535</y><w>80</w><h>110</h></coordinates><panel_attributes>Teilnehmer</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>130</x><y>5</y><w>990</w><h>660</h></coordinates><panel_attributes>Online-Auftritt der Musikschule
--
halign=center</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>160</x><y>45</y><w>120</w><h>40</h></coordinates><panel_attributes>Dozenten anlegen</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>180</x><y>555</y><w>170</w><h>40</h></coordinates><panel_attributes>Aufnahmeantrag stellen</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLActor</id><coordinates><x>20</x><y>405</y><w>60</w><h>110</h></coordinates><panel_attributes>Dozent</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>170</x><y>385</y><w>170</w><h>50</h></coordinates><panel_attributes>Stundenplan pro Woche</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>940</x><y>45</y><w>120</w><h>40</h></coordinates><panel_attributes>Raumplanung</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>700</x><y>125</y><w>120</w><h>50</h></coordinates><panel_attributes>Kurse anlegen</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>370</x><y>445</y><w>200</w><h>50</h></coordinates><panel_attributes>Eintragung der Unterrichtsinhalte</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLActor</id><coordinates><x>0</x><y>695</y><w>100</w><h>110</h></coordinates><panel_attributes>Administrator</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLGeneric</id><coordinates><x>130</x><y>665</y><w>990</w><h>150</h></coordinates><panel_attributes>Backend-Administration
--
halign=center</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>950</x><y>185</y><w>120</w><h>40</h></coordinates><panel_attributes>Unterrichtsplanung</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>260</x><y>705</y><w>260</w><h>40</h></coordinates><panel_attributes>Zugriff und Verwaltung der Datenbank</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>270</x><y>765</y><w>230</w><h>40</h></coordinates><panel_attributes>Zugriff und Verwaltung des Hostings</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>810</x><y>55</y><w>150</w><h>100</h></coordinates><panel_attributes>lt=.&gt;
&lt;&lt;includes&gt;&gt;</panel_attributes><additional_attributes>10;80;130;10</additional_attributes></element><element><id>Relation</id><coordinates><x>810</x><y>145</y><w>160</w><h>80</h></coordinates><panel_attributes>lt=.&gt;
&lt;&lt;includes&gt;&gt;</panel_attributes><additional_attributes>10;17;140;60</additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>200</x><y>225</y><w>290</w><h>140</h></coordinates><panel_attributes>Dozentenübersicht
--
Welche Kurse aktuell
Welche Kurstypen möglich
Welche aktuellen Schüler (mit Anzahl)
Stundenplan pro Woche
Bezahlung (inkl. Stundensätze)</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>620</x><y>45</y><w>120</w><h>70</h></coordinates><panel_attributes>Schülerübersicht
--
Kurse zu Schüler
</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>550</x><y>195</y><w>150</w><h>70</h></coordinates><panel_attributes>Raumübersicht
--
Welche Instrumente
Belegunsplan</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLUseCase</id><coordinates><x>350</x><y>45</y><w>210</w><h>40</h></coordinates><panel_attributes>Übersicht monatliche Einnahmen</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>70</x><y>57</y><w>110</w><h>140</h></coordinates><panel_attributes></panel_attributes><additional_attributes>10;120;90;10</additional_attributes></element><element><id>Relation</id><coordinates><x>70</x><y>57</y><w>300</w><h>140</h></coordinates><panel_attributes></panel_attributes><additional_attributes>10;120;280;10</additional_attributes></element><element><id>Relation</id><coordinates><x>70</x><y>67</y><w>570</w><h>130</h></coordinates><panel_attributes></panel_attributes><additional_attributes>10;110;550;10</additional_attributes></element><element><id>Relation</id><coordinates><x>70</x><y>167</y><w>150</w><h>140</h></coordinates><panel_attributes></panel_attributes><additional_attributes>10;10;130;120</additional_attributes></element><element><id>Relation</id><coordinates><x>70</x><y>167</y><w>500</w><h>80</h></coordinates><panel_attributes></panel_attributes><additional_attributes>10;10;480;60</additional_attributes></element><element><id>Relation</id><coordinates><x>70</x><y>137</y><w>650</w><h>60</h></coordinates><panel_attributes></panel_attributes><additional_attributes>10;40;630;10</additional_attributes></element><element><id>Relation</id><coordinates><x>80</x><y>397</y><w>110</w><h>70</h></coordinates><panel_attributes></panel_attributes><additional_attributes>10;50;90;10</additional_attributes></element><element><id>Relation</id><coordinates><x>80</x><y>437</y><w>310</w><h>50</h></coordinates><panel_attributes></panel_attributes><additional_attributes>10;10;290;30</additional_attributes></element><element><id>Relation</id><coordinates><x>80</x><y>557</y><w>120</w><h>40</h></coordinates><panel_attributes></panel_attributes><additional_attributes>10;20;100;20</additional_attributes></element><element><id>Relation</id><coordinates><x>80</x><y>707</y><w>200</w><h>50</h></coordinates><panel_attributes></panel_attributes><additional_attributes>10;30;180;20</additional_attributes></element><element><id>Relation</id><coordinates><x>80</x><y>727</y><w>210</w><h>80</h></coordinates><panel_attributes></panel_attributes><additional_attributes>10;10;190;60</additional_attributes></element><element><id>Relation</id><coordinates><x>340</x><y>170</y><w>440</w><h>430</h></coordinates><panel_attributes>lt=.&gt;
&lt;&lt;includes&gt;&gt;</panel_attributes><additional_attributes>10;410;420;410;420;10</additional_attributes></element></diagram>

193
_Dokumente/Ausgearbeitete Dokumente/Endpoints.md

@ -0,0 +1,193 @@
# Endpoints
Im folgenden werden diverse Http-Schnittstellen zur Kommunikation zwischen Frontend und Backend beschrieben.
Zusäzlich ist angegeben, für welche Benutzerrollen die jeweiligen Funktionen zu Verfügung steht.
---
### Login
- POST login
- Parameter
- Username string
- Password string
- POST logout
### Übersichtsseite (Dozent und Verwaltung)
- GET screens
- Liefert alle erlaubten Ansichten für einen User zurück
- Liefert Array
- Screen string
### Wochenübersicht (Dozent)
- GET weekly_overview
- Liefert alle Unterrichtseinheiten für die nächsten 7 Tage
- Liefert Array
### Kursübericht [besser Kursdetails] (Dozent und Verwaltung)
- GET course_detail
- Liefert alle Informationen zu einem Kurs
- Paramter
- KursID string
- Liefert object
- KursID string
- DozentID string
- DozentName string
- Unterrichtseinheiten Array
- StartZeit DateTime
- Students Array
- StudentID string
- StudentName string
- GET course_contents
- Liefert alle eingetragenen Inhalten zum Kurs
- Parameter
- KursID string
- PUT new_course_content
- Inhalt der letzten UE wird gesetzt
- Parameter
- KursID string
- Content string
### Welcher Lehrer Welcher Kurs (Verwaltung)
- GET course_teacher_match
- Liefert Array
- KursID string
- KursName string
- DozentID string
- DozentName string
### Welche Schüler Welcher Kurs (Verwaltung)
- GET course_student_match
- Liefert Array
- KursID string
- KursName string
- DozentID string
- DozentName string
### Lehrerübersicht (Verwaltung)
- GET all_teachers
- Liefert alle Dozenten
- Liefert Array
- DozentID string
- DozentName string
### Schüler von Lehrer (Dozent und Verwaltung)
- GET students_of_teacher
- Parameter DozentID
- Liefert Array
- StundentID string
- StudentName string
### Raumübersicht (Verwaltung)
- GET rooms
- Liefert alle verfügbaren Räume, inkl. der vorhandenen Instrumente
- Liefert Array
- RaumID string
- RaumName string
- Instrumente Array
- InstrumentID string
- InstrumentName string
- PUT create_rooms
- Parameter
- RaumName string
- Instrumente Array
- InstrumentID string
### Raumdetails (Verwaltung)
- GET room_free
- Liefert alle aktuell freien Räumen
- Parameter
- RaumID string
- Liefert object
- Belegt bool
- GET room_instruments
- Liefert alle Instrumente zu einem Raum
- Parameter
- RaumID string
- Liefert Array
- InstrumentID string
- InstrumentName string
- Vorhanden bool
- GET lessons
- Liefert alle Unterrichtszeiten in einem Raum
- Parameter
- RaumID string
- Liefert Array
- StartZeit DateTime
### Kurs Erstellen [Person + Kurs] (Verwaltung)
- POST get_capable_teachers
- Liefert alle Dozenten, die einen bestimmten Kurs leiten können
- Parameter
- Typ string
- Instrumente Array
- InstrumentID string
- Liefert Array
- DozentID string
- DozentName string
- POST get_cross_referenced_rooms
- Parameter
- Typ string
- Instrumente Array
- InstrumentID string
- DozentID string
- Liefert Array
- RaumID string
- Zeiten Array
- Zeit DateTime
- POST create_person
- Erstellt eine Person
- Parameter
- Name string
- Vorname string
- IstErmaessigt bool
- Geburtsdatum DateTime
- Geburtsort string
- PLZ string
- Ort string
- StrasseHNR string
- Bankname string
- BLZ string
- KontoNr string
- Liefert object
- StudentID string
- POST create_course
- Erstellt einen Kurs
- Parameter
- Typ string
- Instrumente Array
- InstrumentID string
- DonzentID string
- Unterrichtseinheiten Array
- Zeit int
- POST enroll_student
- Ordnet einen Schueler einem Kurs zu
- Parameter
- KursID string
- StudentID string
### Aufnahmeantrag (Anonymous)
- POST aufnahmeantrag
- Parameter
- Name string
- Vorname string
- IstErmaessigt bool
- Geburtsdatum DateTime
- Geburtsort string
- PLZ string
- Ort string
- StrasseHNR string
- Bankname string
- BLZ string
- KontoNr string
- Typ string
- Instrumente Array
- InstrumentID string
- Laufzeit
- KursID string
### Instrumente (Anonymous)
- GET instruments
- Liefert Instrumente Array
- InstrumentID string
- InstrumentName string

9
_Dokumente/Ausgearbeitete Dokumente/Fragenkatalog.md

@ -0,0 +1,9 @@
### Fragenkatalog
|Frage|Antwort|
|-|-|
|Öffnungszeiten|10:00 - 21:00|
|Arbeitszeiten von Dozenten (vollzeit, teilzeit)|beliebig|
|Wer legt den Donzenten an?|Büro (Verwaltung) oder Admin|
|Wer legt die Kurse an?|Büro (Verwaltung) oder Admin|
|Benutzerrollen|Admin, Büro, Dozent, Schüler|

BIN
_Dokumente/Ausgearbeitete Dokumente/LS Musikschule. PROJEKTSTRUKTURPLAN.pdf

Binary file not shown.

BIN
_Dokumente/Ausgearbeitete Dokumente/LS Musikschule. PROJEKTSTRUKTURPLAN.xlsx

Binary file not shown.

BIN
_Dokumente/Ausgearbeitete Dokumente/MindMap.pdf

Binary file not shown.

BIN
_Dokumente/Ausgearbeitete Dokumente/Papierprototyp_1.pdf

Binary file not shown.

BIN
_Dokumente/Ausgearbeitete Dokumente/Papierprototyp_2.pdf

Binary file not shown.

213
_Dokumente/Ausgearbeitete Dokumente/Pflichtenheft.md

@ -0,0 +1,213 @@
# Pflichtenheft
## Inhalt
1. Zielbestimmung
1. Musskriterien
1. Abgrenzungskriterien
1. Produkteinsatz
1. Anwendungsbereiche
1. Zielgruppen
1. Betriebsbedingungen
1. Produktumgebung
1. Software
1. Hardware
1. Produktfunktionen
1. Dozentenfunktionen
1. Wochenübersicht
2. Kursdetails
2. Verwaltungsfunktionen
1. Offene Anträge
2. Kurse erstellen
1. Kursübersicht
2. Schülerübersicht
3. Schüler eines Dozenten
4. Raumübersicht m. Raumplan
5. Raumdetails
6. Offene Anträge
7. Finanzübersichrt
1. Sonstige Funktionen
1. Login
2. Mitglied zu Kurs hinzufügen
1. Benutzeroberfläche
1. Dialogstruktur
2. Bildschirmlayout
## Zielbestimmung
> Das Ziel von Parsec Iron Puffin (*PIP*) ist es, eine Anwendung zu bieten welche die Organisation der Musikschule erlaubt. Hierzu werden für Dozenten und Verwaltung verschiedene administrative Funktionen bereitgestellt. Die aktuellen Betriebsprozesse sollen vereinfacht und beschleunigt werden.
### Musskriterien
* Es besteht ein Authentifizierung um den Zugriff auf alle Funktionen auf die jeweils berechtigten Personen zu beschränken.
* Der Dozent
* Kann seine Stunden in der kommenden Woche sehen können.
* Kann den Inhalt seiner Kurs für jede Unterrichtseinheit (*UE*) pflegen.
* Kann die Schüler eines Kurses sehen.
* Die Verwaltung
* Kann sehen, welcher Lehrer welchen Kurs leitet.
* Kann sehen, welcher Schüler an welchem Kurs teilnimmt.
* Kann sehen, welche Schüler von einem gegebenen Lehrer unterrichtet werden.
* Kann Räume anlegen.
* Kann bearbeiten, welche Instrumente in einem Raum zu verfügung stehen.
* Kann die aktuelle Verfügbarkeit und die nächsten Termine eines Raumes sehen.
* Kann offene Anträge sehen.
* Kann aus eingehenden Anträgen neue Kurs erstellen und UE planen.
* Kann in einer Übersicht die Einnahmen der Musikschule und den Betrag, welcher an jeden Dozent gezahlt wird sehen.
* Der Administrative Nutzer
* Konfiguriert die Betriebsparameter des Systems
* Sichert die Datenbank
* Ein Kurs hat
* einen Dozenten
* einen Typ (Einzel-, Bandunterricht, Früherziehung)
* einen Raum
* ein oder zwei Zeitpunkte
* und eine Laufzeit
* Der Schüler
* kann einen Aufnahmeantrag über ein Webformular abschicken
* erhält, nachdem die Verwaltung einen Kurs aus dem Antrag erstellt hat, eine Bestätigung (Kursbestätigung) mit den Zeiten Seiner Unterrichtseinheiten
* hat bis zum ersten Unterrichtstermin Zeit, um den Unterricht zu bestätigen
* Sonstiges
* Deutsch ist Verkehrssprache
* Alle Funktionen sind über das Internet erreichbar
* Die Anwendung ist für Mobilgeräte optimiert
### Wunschkriterien
* Der Administrative Nutzer
* Möchte bei der Erstellung eines Kurses durch einen Vorschlag zu passendem Raum, Dozenten und Zeitpunkt unterstützt werden.
* Der Schüler
* Möchte sich einloggen können um die eigenen Unterrichtszeiten und Inhalte einzusehen
* Sonstiges
* Daten sollen soweit sinnvoll möglich auf dem Endgerät zwischengespeichert werden, damit auch ohne Internetverbindung Grundlegende funktionalität geleistet werden kann.
### Abgrenzungungskriterien
* Das *PIP*
* soll keine Abrechnung erstellen oder verschicken.
## Produkteinsatz
### Anwendungsbereiche
Die Anwendung wird von den Dozenten und der Verwaltung zur Planung und Organisation der Musikschule genutzt.
### Zielgruppe
Die Zielgruppe besteht aus der Verwaltung und allen aktuellen und zukünftigen Dozenten der Musikschule. Eventeuell wird die Zielgruppe um die Schüler der Musikschule erweitert.
### Betriebsbedingungen
* Betriebsdauer: täglich, 24 Stunden
* Die Anwendung und ihre Teile werden auf einem virtuellen privaten Server bei einem externen Anbieter bereitgestellt
* Die Anwendung ist global über das Internet erreichbar
* Der Betrieb wird vom Auftragnehmer überwacht
## Produktumgebung
### Software
* Client
* Chrome oder Chromium basierter Browser der Version 74
* Server
* Docker unter Linux (Version 18.09.5)
### Hardware
* Client
* Internetfähiges Endgerät
* Server
* Internetfähiger Server
* Ausreichende Rechen- und Festplattenkapazität
## Produktfunktionen
### **Dozentenfunktionen**
#### Wochenübersicht **/FD01/**
* Der Nutzer sieht eine Übersicht mit von Ihm gegebenen Kursen in den kommenden 7 Tagen, gruppiert nach Wochentag
* Mit einem Klick auf einen Kurs gelangt man zu den entsprechenden Kursdetails
#### Kursdetails **/FD02/**
* Der Nutzer sieht Details zu einem Kurs
* Er sieht alle Schüler, welche an dem Kurs teilnehmen
* Er sieht die Einträge zu den den Unterrichtsinhalten der vergangen Unterrichtseinheiten und kann den Inhalt des letzten Termins bearbeiten / erfassen.
### **Verwaltungsfunktionen
#### Offene Anträge **/FV01/**
* Es werden alle neu eingegangenen und nicht bestägtigten Anträge angzeigt.
* Mit einem Klick auf einen eingegangen Antrag wird die [Kurs erstellen](#kurs-erstellen) Seite aufgerufen.
#### Kurs Erstellen **/FV02/**
* Nach einem eingegegangen Antrag kann basierent auf diesem ein Kurs erstellt werden.
* Typ (Einzel, Gruppe, ), Instrument(e), Laufzeit und Personenbezogne Daten werden in der Kurserstllungs Mask vorausgefüllt
* Es werden Dozenten angezeigt, welche zu den Instrumentenanforderungen passen
* Es werden Räume angezeigt, welche zu den Instrumentenanforderungen passen
* Nach Auswahl von Raum und Dozent wird/werden die Zeit(en) für die Unterrichtseinheiten gewählt werden; Die Möglichkeit der auswahl wird überprüft
* Nach erfolgreicher Auswahl wird der Kurs in der Datenbank angelegt und der Schüler über den Kurs informiert. Dieser muss ihn vor der ersten Unterrichtseinheit bestätigen, ansonster verfällt der Kurs.
#### Kursübersicht **/FV03/**
* In der Kursübersicht werden in Tabellenform alle Kurse zusammen mit ihren Dozenten angezeigt.
* Die Tabelle kann spaltenweise sortiert und nach Dozenten- und Kursname gefiltert werden.
* Ein Klick auf einen Kurs führt zu [Kursdetails](#kursdetails-f02).
* Ein Klick auf einen Dozenten führt zu [Schüler eines Dozenten](#sch%C3%BCler-eines-dozenten-fv05)
#### Schülerübersicht **/FV04/**
* Es werden in Tabellenform alle Schüler mit Ihren Kursen angezeigt, ein Kurs pro Zeile
* Ein Schüler kann also mehrere Zeilen umfassen
* Die Tabelle kann spaltenweise sortiert und nach Schüler- und Kursname gefiltert werden.
#### Schüler eines Dozenten **/FV05/**
* Es werden alle Schüler des ausgewählten Dozenten angezeigt.
#### Raumübersicht **/FV06/**
* Es werden alle Räume mit Grundlegenden Informationen angezeigt.
* aktuelle Belegung
* Instrumente
* Es wird ein Button zum erstellen von neuen Räumen angzeigt
#### Raumdetails **/FV07/**
* Es werden alle Informationen zu einem Raum Angzeigt.
* Name (bearbeitbar)
* aktuelle Belegung
* Instrumente (bearbeitbar)
* Nächste 5 Unterrichtseinheiten in diesem Raum
#### Finanzübersicht **/FV09/**
* Es werden die gesamten monatlichen Einnahmen der Musikschule angzeigt.
* Es werden die Zahlungen an die Dozenten, aufgeschlüsselt nacht Dozent angezeigt.
### **Sonstige Funktionen**
#### Login **/F01/**
* Der Nutzer kann sich mit Benutzername und Passwort anmelden.
* Benutzername und Passwort können von dem Administrativen Nutzer mithilfe von Direktzugriff auf das System angelegt werden
#### Mitglied zu Kurs hinzufügen **/F02/**
* Wenn ein Schüler einen Gruppenkurs erstellt hat, erhält dieser mit seiner Kursbestätigung einen Einladungslink, welcher auf eine "Antrag-Lite" Seite führt.
* Hier können sich weiter Mitglieder der Gruppe/Band in diesen Kurs eintragen.
* Dafür müssen diese nur Ihre Personenbezogenen Daten angeben, Sie werden in der über den Link identifizierten Kurs eingeschrieben.
* Dies muss vor dem ersten Unterrichtstermin geschehen.
## Benutzeroberfläche
> Was sind die grundlegenden Anforderungen an die Benutzeroberfläche (Bildschirmlayout, Dialogstruktur, ...)?
### Dialogstruktur
Im Folgenden wird die grobe Dialogstruktur einer fehlerfreien bzw. konfliktfreien Benutzung des Systems gezeigt wird.
Fehlereingaben haben eine akkumulierte Fehlermeldung zur Folge.
#### Startseite
![Hauptseite](img/Hauptseite.png "Startseite")
#### Übersichtsseite Dozenten
Die Übersichtsseite Dozenten ist die Startseite des Dozenten, die der Dozent nach der Anmeldung /F01/ erreicht.
![Hauptseite](img/Hauptseite_Dozent.png "Hauptseite Dozent")
#### Übersichtsseite Verwaltung
Die Übersichtsseite Verwaltung ist die Startseite der Verwaltung, die die Verwaltung nach der Anmeldung /F01/ erreicht.
![Hauptseite](img/Hauptseite_Verwaltung.png "Hauptseite Dozent")
### Bildschirmlayout
Das Frontend wird mithilfe der JavaScript Bibliothek React erstellt, das Design wird mithilfe der MIT-lizensierten Designbibliothek Material-UI realisiert. Die Anwendung ist für Mobilegeräte optimiert und wird nach den Prinzipien des Responsiven Desings entwickelt.
> Ausnahme sind die Administrationsfunktionen

BIN
_Dokumente/Ausgearbeitete Dokumente/Pflichtenheft.pdf

Binary file not shown.

11
_Dokumente/Ausgearbeitete Dokumente/Rollenverteilung.md

@ -0,0 +1,11 @@
# Rollenverteilung
* Teamleitung ( Levin, Alexej )
* Aufgbenverteilung
* Kommuniktion Organisieren (intern und mit Kunden)
* Probleme lösen (intern und extern)
* Übernimmt Controlling Aufgaben
* Prozessbeobachtung ( Tobi )
* Diverse Geschehen beobachten und chronologisch dokumentieren
* Entwickler ( alle )
* Entwicklung

15
_Dokumente/Ausgearbeitete Dokumente/Wasserfalldiagramm.md

@ -0,0 +1,15 @@
## Analyse
1. Ist-Analyse
2. Soll-Konzept
1. Pflichtenheft
## DV Konzept (Datenverarbeitungskonzept)
* UML, ERD, Testfallkatalog, Struktogramm
## Implementierung
* Kommentierter Code
## Testen
* Vom Testfallkatalog
## Abnahme

BIN
_Dokumente/Ausgearbeitete Dokumente/img/Hauptseite.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

BIN
_Dokumente/Ausgearbeitete Dokumente/img/Hauptseite_Dozent.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

BIN
_Dokumente/Ausgearbeitete Dokumente/img/Hauptseite_Verwaltung.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

21
_Dokumente/Protokolle/2019-05-08_Protokoll.md

@ -0,0 +1,21 @@
# 2019-05-08 Protokoll
_Teilnehmer: Levin Faber, Alexej Komnik, Tobias Schiffarth, Kai Senkowski_
_Ort: Schule_
## Agenda
* Rollenverteilung
* Kommunikationsplan besprechen
* Was ist unser erstes Todo
* Brainstroming
* Fragenkatalog erstellen
## Ergebnisse
* Im Vorlauf wurde ein Projektportfolio auf GitLab eingerichtet
* Ein Rollenplan wurde erstellt
* Der KP wurde besprochen
* Erstes ToDo ist: MindMap erstellen
## Resultierende Aufgaben
* Keine

44
_Dokumente/Protokolle/2019-05-15_Protokoll.md

@ -0,0 +1,44 @@
# 2019-05-15 Protokoll
_Teilnehmer: Levin Faber, Alexej Komnik, Tobias Schiffarth, Kai Senkowski_
_Ort: Schule_
## Agenda
* Papierprototyp
* Pflichtenheft
* ER-Diagram
* Endpoints für Kommunikation zwischen FE und BE
* Fragenkatalog erstellen
* Verwendete Techniken
* Programmiersprachen
* Frameworks
* Docker
* Datenbank
## Ergebnisse
* Verwendete Techniken
* Frontend
* UI Library "React" (Version 16.8.6)
* Designvorlage "Material UI" (Version 3)
* Backend
* C# mit ASP.NET Core WebAPI (Version 2.1)
* EntityFrameworkCore (Version 6)
* SQLite Datenbank für EntityFrameworkCore (Version 2.1)
* Infrastruktur
* Docker (Version 18.09.6)
* Codeverwaltung Gitlab (Gitlab Cloud)
### Fragenkatalog
|Frage|Antwort|
|-|-|
|Öffnungszeiten||
|Arbeitszeiten||
|Donzenten anlegen||
|Benutzerrollen|Admin, Büro, Schüler|
## Resultierende Aufgaben
|Aufgabe|Verantwortlicher|Erledigt|
|-|-|-|
|Papierprototyp erstellen und im nächsten Metting weiter besprechen|Kai, Levin|X|
|Erstellung ER-Diagram und im nächsten Meeting weiter besprechen|Alexej, Tobias|X|
|Erstellung Pflichtenheft und Definition der Endpoints nach Besprechung von Papierprototyp und ER-Diagram|Alle||

19
_Dokumente/Protokolle/2019-05-22_Protokoll.md

@ -0,0 +1,19 @@
# 2019-05-22 Protokoll
_Teilnehmer: Levin Faber, Alexej Komnik, Tobias Schiffarth, Kai Senkowski_
_Ort: Schule_
## Agenda
* Papierprototyp
* ER-Diagramm
* Pflichtenheft
* Laufzettel
## Ergebnisse
* Papierprototyp und ER-Diagramm besprochen und angepasst
* Laufzettel: Abnahme von Kommunikationsplan und Papierprototyp
## Resultierende Aufgaben
|Aufgabe|Verantwortlicher|Erledigt|
|-|-|-|

21
_Dokumente/Protokolle/2019-05-29_Protokoll.md

@ -0,0 +1,21 @@
# 2019-05-29 Protokoll
_Teilnehmer: Levin Faber, Alexej Komnik, Tobias Schiffarth, Kai Senkowski_
_Ort: Schule_
## Agenda
* Planung Pflichtenheft
* Planung Projektsturkturplan inkl. Zeitplan
* Laufzettel
* Abnahme von ERD
## Ergebnisse
* Laufzettel: Abnahme von ERD, MindMap und Fragenkatalog
## Resultierende Aufgaben
|Aufgabe|Verantwortlicher|Erledigt|
|-|-|-|
|Erstellung Pflichtenheft|Kai, Levin||
|Erstellung Projektstrukturplan inkl. Zeitplan|Alexej, Tobi|
|Erstellung div. Diagramme|Alexej, Tobi|

24
_Dokumente/Protokolle/2019-06-05_Protokoll.md

@ -0,0 +1,24 @@
# 2019-06-05 Protokoll
_Teilnehmer: Levin Faber, ~~Alexej Komnik~~, Tobias Schiffarth, Kai Senkowski_
_Ort: Schule_
## Agenda
* Projektstrukturplan und Zeitplan
* Erstellung Datenbankschema
* Status Pflichtenheft
* Nächste TODOs
* Vorbereitung Präsentation
* Pipelines erstellen
* Authentifizierung der Benutzer
* Laufzettel
## Ergebnisse
* Pflichtenheft erste Version fast vollständig
## Resultierende Aufgaben
|Aufgabe|Verantwortlicher|Erledigt|
|-|-|-|
|Erstellung Datenbankschema|Tobi||
|Vorbereitung Präsensation (Basislayout und Inhaltsgliederung)|Kai||

26
_Dokumente/Protokolle/2019-06-12_Protokoll.md

@ -0,0 +1,26 @@
# 2019-06-12 Protokoll
_Teilnehmer: Levin Faber, Alexej Komnik, Tobias Schiffarth, Kai Senkowski_
_Ort: Schule_
## Agenda
* Projektstrukturplan und Zeitplan
* Pflichtenheft
* Abgabe Use-Case-Diagramm
* Endpoints
* Enthaltene Funktionen im Prototyp?
## Ergebnisse
* Pflichtenheft ist abgegeben
* Pflichenheft initial vollständig
* PSP vervollständigt
* Prototyp (enthaltene Funktionen)
* Login
* Antragsgformular
* Wochenübersicht für Dozenten (Dozenten)
* Kurse erstellen/bestätigen (Verwaltung)
## Resultierende Aufgaben
|Aufgabe|Verantwortlicher|Erledigt|
|Pflichtenheft|Levin|Ja|

15
_Dokumente/Protokolle/Protokoll_Template.md

@ -0,0 +1,15 @@
# 2019-xx-xx Protokoll
_Teilnehmer: Levin Faber, Alexej Komnik, Tobias Schiffarth, Kai Senkowski_
_Ort: Schule_
## Agenda
* Punkt 1
## Ergebnisse
* Punkt 1
## Resultierende Aufgaben
|Aufgabe|Verantwortlicher|Erledigt|
|-|-|-|

361
package-lock.json generated

@ -0,0 +1,361 @@
{
"requires": true,
"lockfileVersion": 1,
"dependencies": {
"@babel/runtime": {
"version": "7.4.4",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.4.tgz",
"integrity": "sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg==",
"requires": {
"regenerator-runtime": "^0.13.2"
}
},
"@emotion/hash": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.7.1.tgz",
"integrity": "sha512-OYpa/Sg+2GDX+jibUfpZVn1YqSVRpYmTLF2eyAfrFTIJSbwyIrc+YscayoykvaOME/wV4BV0Sa0yqdMrgse6mA=="
},
"@material-ui/core": {
"version": "4.0.0-beta.2",
"resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.0.0-beta.2.tgz",
"integrity": "sha512-AcAmd55hRloY2YqDvcwmZK4OiLZ+98nKliRh/YKyQqISEV0Lt98qRxxepluAm4KKr509Bjgg+rEJ+K+FpDTGjw==",
"requires": {
"@babel/runtime": "^7.2.0",
"@material-ui/styles": "^4.0.0-beta.2",
"@material-ui/system": "^4.0.0-beta.2",
"@material-ui/types": "^4.0.0-beta.2",
"@material-ui/utils": "^4.0.0-beta.1",
"@types/react-transition-group": "^2.0.16",
"clsx": "^1.0.2",
"convert-css-length": "^1.0.2",
"csstype": "^2.5.2",
"debounce": "^1.1.0",
"deepmerge": "^3.0.0",
"hoist-non-react-statics": "^3.2.1",
"is-plain-object": "^2.0.4",
"normalize-scroll-left": "^0.1.2",
"popper.js": "^1.14.1",
"prop-types": "^15.7.2",
"react-event-listener": "^0.6.6",
"react-transition-group": "^4.0.0",
"warning": "^4.0.1"
}
},
"@material-ui/styles": {
"version": "4.0.0-beta.2",
"resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.0.0-beta.2.tgz",
"integrity": "sha512-fX0pfTtw2f6+AlfzQlsue5AJ18mZbFbC9Og339tx9wwM8aPjk/9dNr9nPugAqFbdB41Lz3t4tn5sGx2Jm/grEg==",
"requires": {
"@babel/runtime": "^7.2.0",
"@emotion/hash": "^0.7.1",
"@material-ui/types": "^4.0.0-beta.2",
"@material-ui/utils": "^4.0.0-beta.1",
"clsx": "^1.0.2",
"deepmerge": "^3.0.0",
"hoist-non-react-statics": "^3.2.1",
"jss": "^10.0.0-alpha.16",
"jss-plugin-camel-case": "^10.0.0-alpha.16",
"jss-plugin-default-unit": "^10.0.0-alpha.16",
"jss-plugin-global": "^10.0.0-alpha.16",
"jss-plugin-nested": "^10.0.0-alpha.16",
"jss-plugin-props-sort": "^10.0.0-alpha.16",
"jss-plugin-rule-value-function": "^10.0.0-alpha.16",
"jss-plugin-vendor-prefixer": "^10.0.0-alpha.16",
"prop-types": "^15.7.2",
"warning": "^4.0.1"
}
},
"@material-ui/system": {
"version": "4.0.0-beta.2",
"resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.0.0-beta.2.tgz",
"integrity": "sha512-0KkCMZuUDGtx4iKbWxw9G4ncn5ZNgG7aYnHLEebFEPyb9EX66XP2whIUHWhPSaPBXb4QarUWOSCGDFoCX6ecSw==",
"requires": {
"@babel/runtime": "^7.2.0",
"deepmerge": "^3.0.0",
"prop-types": "^15.7.2",
"warning": "^4.0.1"
}
},
"@material-ui/types": {
"version": "4.0.0-beta.2",
"resolved": "https://registry.npmjs.org/@material-ui/types/-/types-4.0.0-beta.2.tgz",
"integrity": "sha512-Fct55vzMMUyiJqCBkBLERSrB2rdD7C4vbWtJcnhHaGSpAayG3jxhbxEoxm96UHsuI1DZAN7DdxwA4Y+w+pi78Q=="
},
"@material-ui/utils": {
"version": "4.0.0-beta.1",
"resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.0.0-beta.1.tgz",
"integrity": "sha512-DXheNh0CQ5y9QBFmXom3+lwKjFMLS1aBog40870fH3i0P0isVweSqVGadVDoyX9ma6cV/DfcLFSsb1+CBgNA1g==",
"requires": {
"@babel/runtime": "^7.2.0",
"prop-types": "^15.7.2",
"react-is": "^16.8.0"
}
},
"@types/prop-types": {
"version": "15.7.1",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.1.tgz",
"integrity": "sha512-CFzn9idOEpHrgdw8JsoTkaDDyRWk1jrzIV8djzcgpq0y9tG4B4lFT+Nxh52DVpDXV+n4+NPNv7M1Dj5uMp6XFg=="
},
"@types/react": {
"version": "16.8.17",
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.17.tgz",
"integrity": "sha512-pln3mgc6VfkNg92WXODul/ONo140huK9OMsx62GlBlZ2lvjNK86PQJhYMPLO1i66aF5O9OPyZefogvNltBIszA==",
"requires": {
"@types/prop-types": "*",
"csstype": "^2.2.0"
}
},
"@types/react-transition-group": {
"version": "2.9.1",
"resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-2.9.1.tgz",
"integrity": "sha512-1usq4DRUVBFnxc9KGJAlJO9EpQrLZGDDEC8wDOn2+2ODSyudYo8FiIzPDRaX/hfQjHqGeeoNaNdA2bj0l35hZQ==",
"requires": {
"@types/react": "*"
}
},
"clsx": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-1.0.4.tgz",
"integrity": "sha512-1mQ557MIZTrL/140j+JVdRM6e31/OA4vTYxXgqIIZlndyfjHpyawKZia1Im05Vp9BWmImkcNrNtFYQMyFcgJDg=="
},
"console-polyfill": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/console-polyfill/-/console-polyfill-0.1.2.tgz",
"integrity": "sha1-ls/tUcr3gYn2mVcubxgnHcN8DjA="
},
"convert-css-length": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/convert-css-length/-/convert-css-length-1.0.2.tgz",
"integrity": "sha512-ecV7j3hXyXN1X2XfJBzhMR0o1Obv0v3nHmn0UiS3ACENrzbxE/EknkiunS/fCwQva0U62X1GChi8GaPh4oTlLg==",
"requires": {
"console-polyfill": "^0.1.2",
"parse-unit": "^1.0.1"
}
},
"css-vendor": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.2.tgz",
"integrity": "sha512-Xn5ZAlI00d8HaQ8/oQ8d+iBzSF//NCc77LPzsucM32X/R/yTqmXy6otVsAM0XleXk6HjPuXoVZwXsayky/fsFQ==",
"requires": {
"@babel/runtime": "^7.3.1",
"is-in-browser": "^1.0.2"
}
},
"csstype": {
"version": "2.6.4",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.4.tgz",
"integrity": "sha512-lAJUJP3M6HxFXbqtGRc0iZrdyeN+WzOWeY0q/VnFzI+kqVrYIzC7bWlKqCW7oCIdzoPkvfp82EVvrTlQ8zsWQg=="
},
"debounce": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz",
"integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg=="
},
"deepmerge": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.2.0.tgz",
"integrity": "sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow=="
},
"dom-helpers": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz",
"integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==",
"requires": {
"@babel/runtime": "^7.1.2"
}
},
"hoist-non-react-statics": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz",
"integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==",
"requires": {
"react-is": "^16.7.0"
}
},
"hyphenate-style-name": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz",
"integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ=="
},
"is-in-browser": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz",
"integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU="
},
"is-plain-object": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
"integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
"requires": {
"isobject": "^3.0.1"
}
},
"isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
},
"js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
"jss": {
"version": "10.0.0-alpha.16",
"resolved": "https://registry.npmjs.org/jss/-/jss-10.0.0-alpha.16.tgz",
"integrity": "sha512-HmKNNnr82TR5jkWjBcbrx/uim2ief588pWp7zsf4GQpL125zRkEaWYL1SXv5bR6bBvAoTtvJsTAOxDIlLxUNZg==",
"requires": {
"@babel/runtime": "^7.3.1",
"is-in-browser": "^1.1.3",
"tiny-warning": "^1.0.2"
}
},
"jss-plugin-camel-case": {
"version": "10.0.0-alpha.16",
"resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.0.0-alpha.16.tgz",
"integrity": "sha512-nki+smHEsFyoZ0OlOYtaxVqcQA0ZHVJCE1slRnk+1TklbmxbBiO4TwITMTEaNIDv0U0Uyb0Z8wVgFgRwCCIFog==",
"requires": {
"@babel/runtime": "^7.3.1",
"hyphenate-style-name": "^1.0.3",
"jss": "10.0.0-alpha.16"
}
},
"jss-plugin-default-unit": {
"version": "10.0.0-alpha.16",
"resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.0.0-alpha.16.tgz",
"integrity": "sha512-jjGW4F/r9yKvoyUk22M8nWhdMfvoWzJw/oFO2cDRXCk2onnWFiRALfqeUsEDyocwdZbyVF9WhZbSHn4GL03kSw==",
"requires": {
"@babel/runtime": "^7.3.1",
"jss": "10.0.0-alpha.16"
}
},
"jss-plugin-global": {
"version": "10.0.0-alpha.16",
"resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.0.0-alpha.16.tgz",
"integrity": "sha512-B1mm2ZF9OEsWPmzkG5ZUXqV88smDqpc4unILLXhWVuj0U5JeT0DNitH+QbXFrSueDJzkWVfvqyckvWDR/0qeDg==",
"requires": {
"@babel/runtime": "^7.3.1",
"jss": "10.0.0-alpha.16"
}
},
"jss-plugin-nested": {
"version": "10.0.0-alpha.16",
"resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.0.0-alpha.16.tgz",
"integrity": "sha512-3l/MB6COnIpq4GOXQFae6UydoaIPa81UxhuBTEQuiAojgTeUla9L7nB3h18Q4zAhQQpjxaEsyppAKuEzIP7kPQ==",
"requires": {
"@babel/runtime": "^7.3.1",
"jss": "10.0.0-alpha.16",
"tiny-warning": "^1.0.2"
}
},
"jss-plugin-props-sort": {
"version": "10.0.0-alpha.16",
"resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.0.0-alpha.16.tgz",
"integrity": "sha512-+Yn9nugHAH58nf/d43H2uxMvlCFPDgLKRSmKO4Q4m1IGYjMbHsWt1Rk2HfC9IiCanqcqpc8hstwtzf+HG7PWFQ==",
"requires": {
"@babel/runtime": "^7.3.1",
"jss": "10.0.0-alpha.16"
}
},
"jss-plugin-rule-value-function": {
"version": "10.0.0-alpha.16",
"resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.0.0-alpha.16.tgz",
"integrity": "sha512-MQap9ne6ZGZH0NlpSQTMSm6QalBTF0hYpd2uaGQwam+GlT7IKeO+sTjd46I1WgO3kyOmwb0pIY6CnuLQGXKtSA==",
"requires": {
"@babel/runtime": "^7.3.1",
"jss": "10.0.0-alpha.16"
}
},
"jss-plugin-vendor-prefixer": {
"version": "10.0.0-alpha.16",
"resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.0.0-alpha.16.tgz",
"integrity": "sha512-70yJ6QE5dN8VlPUGKld5jK2SKyrteheEL/ismexpybIufunMs6iJgkhDndbOfv8ia13yZgUVqeakMdhRKYwK1A==",
"requires": {
"@babel/runtime": "^7.3.1",
"css-vendor": "^2.0.1",
"jss": "10.0.0-alpha.16"
}
},
"loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"requires": {
"js-tokens": "^3.0.0 || ^4.0.0"
}
},
"normalize-scroll-left": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/normalize-scroll-left/-/normalize-scroll-left-0.1.2.tgz",
"integrity": "sha512-F9YMRls0zCF6BFIE2YnXDRpHPpfd91nOIaNdDgrx5YMoPLo8Wqj+6jNXHQsYBavJeXP4ww8HCt0xQAKc5qk2Fg=="
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
"parse-unit": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parse-unit/-/parse-unit-1.0.1.tgz",
"integrity": "sha1-fhu21b7zh0wo45JSaiVBFwKR7s8="
},
"popper.js": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.15.0.tgz",
"integrity": "sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA=="
},
"prop-types": {
"version": "15.7.2",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
"integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
"requires": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
"react-is": "^16.8.1"
}
},
"react-event-listener": {
"version": "0.6.6",
"resolved": "https://registry.npmjs.org/react-event-listener/-/react-event-listener-0.6.6.tgz",
"integrity": "sha512-+hCNqfy7o9wvO6UgjqFmBzARJS7qrNoda0VqzvOuioEpoEXKutiKuv92dSz6kP7rYLmyHPyYNLesi5t/aH1gfw==",
"requires": {
"@babel/runtime": "^7.2.0",
"prop-types": "^15.6.0",
"warning": "^4.0.1"
}
},
"react-is": {
"version": "16.8.6",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz",
"integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA=="
},
"react-transition-group": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.0.1.tgz",
"integrity": "sha512-SsLcBYhO4afXJC9esL8XMxi/y0ZvEc7To0TvtrBELqzpjXQHPZOTxvuPh2/4EhYc0uSMfp2SExIxsyJ0pBdNzg==",
"requires": {
"dom-helpers": "^3.4.0",
"loose-envify": "^1.4.0",
"prop-types": "^15.6.2"
}
},
"regenerator-runtime": {
"version": "0.13.2",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz",
"integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA=="
},
"tiny-warning": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.2.tgz",
"integrity": "sha512-rru86D9CpQRLvsFG5XFdy0KdLAvjdQDyZCsRcuu60WtzFylDM3eAWSxEVz5kzL2Gp544XiUvPbVKtOA/txLi9Q=="
},
"warning": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
"integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
"requires": {
"loose-envify": "^1.0.0"
}
}
}
}
Loading…
Cancel
Save