Compare commits
141 Commits
master
...
f/formular
| Author | SHA1 | Date |
|---|---|---|
|
|
b60f09b101 | 7 years ago |
|
|
410d292264 | 7 years ago |
|
|
5616e84854 | 7 years ago |
|
|
517e31a638 | 7 years ago |
|
|
e0ea0bdce1 | 7 years ago |
|
|
5aca92512f | 7 years ago |
|
|
a8b6fdba05 | 7 years ago |
|
|
9a8e8adafd | 7 years ago |
|
|
7311176cef | 7 years ago |
|
|
1aa54c18f2 | 7 years ago |
|
|
536dd4b7a7 | 7 years ago |
|
|
e4c359fab5 | 7 years ago |
|
|
6c2e4612eb | 7 years ago |
|
|
eef0c6cc02 | 7 years ago |
|
|
a86ca40f60 | 7 years ago |
|
|
ba5e6dafcb | 7 years ago |
|
|
a19b0d05a0 | 7 years ago |
|
|
4f93a72bea | 7 years ago |
|
|
7ecba69ac5 | 7 years ago |
|
|
aff67bb600 | 7 years ago |
|
|
e4f6c38736 | 7 years ago |
|
|
7a3d966022 | 7 years ago |
|
|
30a174af35 | 7 years ago |
|
|
0f644ab9fb | 7 years ago |
|
|
3c1969a54e | 7 years ago |
|
|
bf985ed0a0 | 7 years ago |
|
|
3fdc722df7 | 7 years ago |
|
|
db8305a8e2 | 7 years ago |
|
|
044ebda7df | 7 years ago |
|
|
9b613c23a9 | 7 years ago |
|
|
4daebcf1d5 | 7 years ago |
|
|
91597f7de4 | 7 years ago |
|
|
138dda4374 | 7 years ago |
|
|
0beb7c57ca | 7 years ago |
|
|
d480a85c82 | 7 years ago |
|
|
fc4f037891 | 7 years ago |
|
|
6f904c3e38 | 7 years ago |
|
|
2b8de44519 | 7 years ago |
|
|
db978f9e90 | 7 years ago |
|
|
df559f1b8d | 7 years ago |
|
|
39f6fb1b18 | 7 years ago |
|
|
bcbd943dd6 | 7 years ago |
|
|
cd8005ef79 | 7 years ago |
|
|
112447b2dc | 7 years ago |
|
|
248b680fe6 | 7 years ago |
|
|
46f35ff7eb | 7 years ago |
|
|
3abdc43589 | 7 years ago |
|
|
b1fbad9eab | 7 years ago |
|
|
5409726f67 | 7 years ago |
|
|
74c2ee475b | 7 years ago |
|
|
645eafeb0d | 7 years ago |
|
|
e947e20f93 | 7 years ago |
|
|
3edee380b7 | 7 years ago |
|
|
ac8ea43d25 | 7 years ago |
|
|
63e55b8b1f | 7 years ago |
|
|
0c0d3a3be0 | 7 years ago |
|
|
afa43826b4 | 7 years ago |
|
|
17d441ddb1 | 7 years ago |
|
|
bafd52afb2 | 7 years ago |
|
|
7f5724a95f | 7 years ago |
|
|
3baeff8b0a | 7 years ago |
|
|
09f9687dd5 | 7 years ago |
|
|
0248913e81 | 7 years ago |
|
|
96bce4fc39 | 7 years ago |
|
|
1d2d00d8f8 | 7 years ago |
|
|
939dfaafb4 | 7 years ago |
|
|
e957901597 | 7 years ago |
|
|
6fb075ecc0 | 7 years ago |
|
|
60a1c01eb9 | 7 years ago |
|
|
7e23a93410 | 7 years ago |
|
|
337b2f9e7a | 7 years ago |
|
|
18232ee6b3 | 7 years ago |
|
|
1744b47a86 | 7 years ago |
|
|
a890331609 | 7 years ago |
|
|
8d9e9e7a44 | 7 years ago |
|
|
6dc3854226 | 7 years ago |
|
|
d121318f75 | 7 years ago |
|
|
4536a4ef40 | 7 years ago |
|
|
b94e0a3de7 | 7 years ago |
|
|
b79e566d18 | 7 years ago |
|
|
02a5e125a2 | 7 years ago |
|
|
ad6a2404d7 | 7 years ago |
|
|
233aa04817 | 7 years ago |
|
|
6e63b48163 | 7 years ago |
|
|
0b14603366 | 7 years ago |
|
|
cd887b4fb6 | 7 years ago |
|
|
7d439075b6 | 7 years ago |
|
|
895a6376b7 | 7 years ago |
|
|
cd5d32af4d | 7 years ago |
|
|
743e32885b | 7 years ago |
|
|
e6aa36948f | 7 years ago |
|
|
786af31d9f | 7 years ago |
|
|
0eeaeb077d | 7 years ago |
|
|
b515e5a7a7 | 7 years ago |
|
|
93fd8d871e | 7 years ago |
|
|
1fde640178 | 7 years ago |
|
|
f985a69de9 | 7 years ago |
|
|
ba0ed4a900 | 7 years ago |
|
|
4d3422b39d | 7 years ago |
|
|
4ccc812f35 | 7 years ago |
|
|
3509439dfb | 7 years ago |
|
|
6fa231ac3c | 7 years ago |
|
|
a6f323c8eb | 7 years ago |
|
|
479a4d2d81 | 7 years ago |
|
|
92bb8351dc | 7 years ago |
|
|
ac1c31beb7 | 7 years ago |
|
|
f777c10353 | 7 years ago |
|
|
abcd2e95fd | 7 years ago |
|
|
3e34d3cf1a | 7 years ago |
|
|
d0a85eb60c | 7 years ago |
|
|
2625465071 | 7 years ago |
|
|
ff38e43576 | 7 years ago |
|
|
bc4629ea67 | 7 years ago |
|
|
ff4d67bfe1 | 7 years ago |
|
|
849140bd54 | 7 years ago |
|
|
1535bb0e21 | 7 years ago |
|
|
95ea0e935a | 7 years ago |
|
|
30929c60f7 | 7 years ago |
|
|
f0014a083d | 7 years ago |
|
|
23fb24972e | 7 years ago |
|
|
819eda375b | 7 years ago |
|
|
e878d571ea | 7 years ago |
|
|
63acad363a | 7 years ago |
|
|
3d70291fa9 | 7 years ago |
|
|
6c3fc58051 | 7 years ago |
|
|
49f8e987f7 | 7 years ago |
|
|
e9a84f69a4 | 7 years ago |
|
|
9f7ba498f5 | 7 years ago |
|
|
80f04bad40 | 7 years ago |
|
|
a60f4338ab | 7 years ago |
|
|
bfe064c04a | 7 years ago |
|
|
64666e06eb | 7 years ago |
|
|
7c66efedae | 7 years ago |
|
|
99c0ad580f | 7 years ago |
|
|
bdb63ed920 | 7 years ago |
|
|
661be5e9b5 | 7 years ago |
|
|
e06404fc30 | 7 years ago |
|
|
b54b4bf845 | 7 years ago |
|
|
b59b103236 | 7 years ago |
|
|
3faa816ab5 | 7 years ago |
|
|
8422cd200f | 7 years ago |
87 changed files with 15552 additions and 3 deletions
@ -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,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,0 +1,9 @@
|
||||
.dockerignore |
||||
.env |
||||
.git |
||||
.gitignore |
||||
.vs |
||||
.vscode |
||||
*/bin |
||||
*/obj |
||||
**/.toolstarget |
||||
@ -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/ |
||||
@ -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 |
||||
@ -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) |
||||
{ |
||||
} |
||||
} |
||||
} |
||||
@ -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"] |
||||
@ -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> |
||||
@ -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>(); |
||||
} |
||||
} |
||||
@ -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 |
||||
} |
||||
} |
||||
} |
||||
@ -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(); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,9 @@
|
||||
{ |
||||
"Logging": { |
||||
"LogLevel": { |
||||
"Default": "Debug", |
||||
"System": "Information", |
||||
"Microsoft": "Information" |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,8 @@
|
||||
{ |
||||
"Logging": { |
||||
"LogLevel": { |
||||
"Default": "Warning" |
||||
} |
||||
}, |
||||
"AllowedHosts": "*" |
||||
} |
||||
@ -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 |
||||
|
||||
@ -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"] |
||||
@ -0,0 +1,14 @@
|
||||
events { |
||||
worker_connections 1024; |
||||
} |
||||
|
||||
http { |
||||
server { |
||||
listen 80; |
||||
root /usr/share/nginx/html; |
||||
|
||||
location / { |
||||
autoindex on; |
||||
} |
||||
} |
||||
} |
||||
@ -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 |
||||
|
||||
@ -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,0 +1,7 @@
|
||||
# React App für die EVA_Lernsituatuin |
||||
|
||||
# Pakages |
||||
|
||||
- Material UI |
||||
- React Router |
||||
- Sentry |
||||
@ -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> |
||||
File diff suppressed because it is too large
Load Diff
@ -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" |
||||
] |
||||
} |
||||
} |
||||
|
After Width: | Height: | Size: 3.8 KiB |
@ -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> |
||||
@ -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" |
||||
} |
||||
@ -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; |
||||
@ -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); |
||||
@ -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; |
||||
@ -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")); |
||||
@ -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); |
||||
} |
||||
@ -1,14 +1,42 @@
|
||||
# EVA Lernsituation |
||||
|
||||
_Levin Faber, Alexej Komnik, Tobias Schiffarth, Kai Senkowski_ |
||||
## Teilnehmer |
||||
|
||||
* Levin Faber |
||||
* Alexej Komnik |
||||
* Tobias Schifffarth |
||||
* Tobias Schiffarth |
||||
* Kai Senkowski |
||||
|
||||
## 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) |
||||
* 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 |
||||
|
||||
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 50 KiB |
@ -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 |
||||
<<abstract>> |
||||
-- |
||||
_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=<<-</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=<<-</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 |
||||
<<enum>> |
||||
-- |
||||
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 |
||||
<<enum>> |
||||
-- |
||||
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> |
||||
|
After Width: | Height: | Size: 111 KiB |
@ -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=.> |
||||
|
||||
|
||||
<<includes>></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=.> |
||||
|
||||
|
||||
<<includes>></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=.> |
||||
<<includes>></panel_attributes><additional_attributes>10;410;420;410;420;10</additional_attributes></element></diagram> |
||||
@ -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 |
||||
@ -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| |
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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 |
||||
|
||||
 |
||||
|
||||
#### Übersichtsseite Dozenten |
||||
|
||||
Die Übersichtsseite Dozenten ist die Startseite des Dozenten, die der Dozent nach der Anmeldung /F01/ erreicht. |
||||
|
||||
 |
||||
|
||||
#### Übersichtsseite Verwaltung |
||||
|
||||
Die Übersichtsseite Verwaltung ist die Startseite der Verwaltung, die die Verwaltung nach der Anmeldung /F01/ erreicht. |
||||
|
||||
 |
||||
|
||||
### 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 |
||||
Binary file not shown.
@ -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 |
||||
@ -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 |
||||
|
After Width: | Height: | Size: 9.7 KiB |
|
After Width: | Height: | Size: 7.2 KiB |
|
After Width: | Height: | Size: 30 KiB |
@ -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 |
||||
@ -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|| |
||||
@ -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| |
||||
|-|-|-| |
||||
@ -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| |
||||
@ -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|| |
||||
@ -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| |
||||
@ -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| |
||||
|-|-|-| |
||||
@ -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…
Reference in new issue