From 1d2d00d8f8811c53c72618878073d471df55ece5 Mon Sep 17 00:00:00 2001 From: Levin Faber Date: Wed, 15 May 2019 13:58:42 +0200 Subject: [PATCH 01/22] WIP --- Frontend/package-lock.json | 444 +++++++++++++++++++++++++++++++++++++++ Frontend/package.json | 2 + Frontend/public/index.html | 5 +- Frontend/src/components/App.js | 5 +- Frontend/src/components/Login.js | 15 ++ 5 files changed, 469 insertions(+), 2 deletions(-) create mode 100644 Frontend/src/components/Login.js diff --git a/Frontend/package-lock.json b/Frontend/package-lock.json index 876e08f..e7c926c 100644 --- a/Frontend/package-lock.json +++ b/Frontend/package-lock.json @@ -911,6 +911,11 @@ "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-9.0.1.tgz", "integrity": "sha512-6It2EVfGskxZCQhuykrfnALg7oVeiI6KclWSmGDqB0AiInVrTGB9Jp9i4/Ad21u9Jde/voVQz6eFX/eSg/UsPA==" }, + "@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==" + }, "@hapi/address": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.0.0.tgz", @@ -1148,6 +1153,82 @@ "@types/yargs": "^12.0.9" } }, + "@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" + } + }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", @@ -1337,11 +1418,33 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.0.tgz", "integrity": "sha512-Jrb/x3HT4PTJp6a4avhmJCDEVrPdqLfl3e8GGMbpkGGdwAV5UGlIs4vVEfsHHfylZVOKZWpOqmqFH8CbfOZ6kg==" }, + "@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/q": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==" }, + "@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": "*" + } + }, "@types/stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", @@ -3308,6 +3411,11 @@ "shallow-clone": "^0.1.2" } }, + "clsx": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.0.4.tgz", + "integrity": "sha512-1mQ557MIZTrL/140j+JVdRM6e31/OA4vTYxXgqIIZlndyfjHpyawKZia1Im05Vp9BWmImkcNrNtFYQMyFcgJDg==" + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -3472,6 +3580,11 @@ "date-now": "^0.1.4" } }, + "console-polyfill": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/console-polyfill/-/console-polyfill-0.1.2.tgz", + "integrity": "sha1-ls/tUcr3gYn2mVcubxgnHcN8DjA=" + }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -3492,6 +3605,15 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, + "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" + } + }, "convert-source-map": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", @@ -3599,6 +3721,15 @@ "sha.js": "^2.4.8" } }, + "create-react-context": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.2.3.tgz", + "integrity": "sha512-CQBmD0+QGgTaxDL3OX1IDXYqjkp2It4RIbcb99jS6AEg27Ga+a9G3JtK6SIu0HBwPLZlmwt9F7UwWA4Bn92Rag==", + "requires": { + "fbjs": "^0.8.0", + "gud": "^1.0.0" + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -3752,6 +3883,15 @@ "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz", "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=" }, + "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" + } + }, "css-what": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", @@ -3870,6 +4010,11 @@ "cssom": "0.3.x" } }, + "csstype": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.4.tgz", + "integrity": "sha512-lAJUJP3M6HxFXbqtGRc0iZrdyeN+WzOWeY0q/VnFzI+kqVrYIzC7bWlKqCW7oCIdzoPkvfp82EVvrTlQ8zsWQg==" + }, "cyclist": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", @@ -3915,6 +4060,11 @@ "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" }, + "debounce": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz", + "integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg==" + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -3943,6 +4093,11 @@ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, + "deepmerge": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.2.0.tgz", + "integrity": "sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow==" + }, "default-gateway": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", @@ -4156,6 +4311,14 @@ "utila": "~0.4" } }, + "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" + } + }, "dom-serializer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", @@ -4282,6 +4445,14 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", @@ -5117,6 +5288,35 @@ "bser": "^2.0.0" } }, + "fbjs": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", + "requires": { + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + } + } + }, "figgy-pudding": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", @@ -5519,6 +5719,11 @@ "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, + "gud": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" + }, "gzip-size": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.0.0.tgz", @@ -5693,6 +5898,19 @@ "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" }, + "history": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/history/-/history-4.9.0.tgz", + "integrity": "sha512-H2DkjCjXf0Op9OAr6nJ56fcRkTSNrUiv41vNJ6IswJjif6wlpZK0BTfFbi7qK9dXLSYZxkq5lBsj3vUjlYBYZA==", + "requires": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^2.2.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^0.4.0" + } + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -5703,6 +5921,14 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "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" + } + }, "hosted-git-info": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", @@ -5863,6 +6089,11 @@ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, + "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==" + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -6172,6 +6403,11 @@ "is-extglob": "^2.1.1" } }, + "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-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -6298,6 +6534,15 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -7561,6 +7806,82 @@ "verror": "1.10.0" } }, + "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" + } + }, "jsx-ast-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz", @@ -8193,6 +8514,15 @@ "lower-case": "^1.1.1" } }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, "node-forge": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", @@ -8310,6 +8640,11 @@ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" }, + "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==" + }, "normalize-url": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", @@ -8671,6 +9006,11 @@ "json-parse-better-errors": "^1.0.1" } }, + "parse-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-unit/-/parse-unit-1.0.1.tgz", + "integrity": "sha1-fhu21b7zh0wo45JSaiVBFwKR7s8=" + }, "parse5": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", @@ -8846,6 +9186,11 @@ "ts-pnp": "^1.0.0" } }, + "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==" + }, "portfinder": { "version": "1.0.20", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", @@ -10068,11 +10413,67 @@ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-5.1.5.tgz", "integrity": "sha512-O9JRum1Zq/qCPFH5qVEvDDrVun8Jv9vbHtZXCR1EuRj9sKg1xJTlHxBzU6AkCzpvxRLuiY4OKImy3cDLQ+UTdg==" }, + "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-router": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.0.0.tgz", + "integrity": "sha512-6EQDakGdLG/it2x9EaCt9ZpEEPxnd0OCLBHQ1AcITAAx7nCnyvnzf76jKWG1s2/oJ7SSviUgfWHofdYljFexsA==", + "requires": { + "@babel/runtime": "^7.1.2", + "create-react-context": "^0.2.2", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + } + } + } + }, + "react-router-dom": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.0.0.tgz", + "integrity": "sha512-wSpja5g9kh5dIteZT3tUoggjnsa+TPFHSMrpHXMpFsaHhQkm/JNVGh2jiF9Dkh4+duj4MKCkwO6H08u6inZYgQ==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + } + }, "react-scripts": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-3.0.0.tgz", @@ -10131,6 +10532,16 @@ "workbox-webpack-plugin": "4.2.0" } }, + "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" + } + }, "read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -10457,6 +10868,11 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" }, + "resolve-pathname": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz", + "integrity": "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg==" + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -11544,6 +11960,16 @@ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, + "tiny-invariant": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.0.4.tgz", + "integrity": "sha512-lMhRd/djQJ3MoaHEBrw8e2/uM4rs9YMNk0iOr8rHQ0QdbM7D4l0gFl3szKdeixrlyfm9Zqi4dxHCM2qVG8ND5g==" + }, + "tiny-warning": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.2.tgz", + "integrity": "sha512-rru86D9CpQRLvsFG5XFdy0KdLAvjdQDyZCsRcuu60WtzFylDM3eAWSxEVz5kzL2Gp544XiUvPbVKtOA/txLi9Q==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -11680,6 +12106,11 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, + "ua-parser-js": { + "version": "0.7.19", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz", + "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==" + }, "uglify-js": { "version": "3.4.10", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", @@ -11976,6 +12407,11 @@ "spdx-expression-parse": "^3.0.0" } }, + "value-equal": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz", + "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw==" + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -12076,6 +12512,14 @@ "makeerror": "1.0.x" } }, + "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" + } + }, "watchpack": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", diff --git a/Frontend/package.json b/Frontend/package.json index 1598d21..3e5f630 100644 --- a/Frontend/package.json +++ b/Frontend/package.json @@ -3,8 +3,10 @@ "version": "0.1.0", "private": true, "dependencies": { + "@material-ui/core": "^4.0.0-beta.2", "react": "^16.8.6", "react-dom": "^16.8.6", + "react-router-dom": "^5.0.0", "react-scripts": "3.0.0" }, "scripts": { diff --git a/Frontend/public/index.html b/Frontend/public/index.html index f780610..4c8d424 100644 --- a/Frontend/public/index.html +++ b/Frontend/public/index.html @@ -3,7 +3,10 @@ - + Lernsituation diff --git a/Frontend/src/components/App.js b/Frontend/src/components/App.js index b575ad7..37d6b9b 100644 --- a/Frontend/src/components/App.js +++ b/Frontend/src/components/App.js @@ -1,9 +1,12 @@ import React, { Component } from "react"; +import CssBaseline from "@material-ui/core/Button"; class App extends Component { state = {}; render() { - return <>; + return + + ; } } diff --git a/Frontend/src/components/Login.js b/Frontend/src/components/Login.js new file mode 100644 index 0000000..ab5a99a --- /dev/null +++ b/Frontend/src/components/Login.js @@ -0,0 +1,15 @@ +import React, { Component } from "react"; +import Button from "@material-ui/core/Button"; +import Container from '@material-ui/core/Container'; + +class Login extends Component { + state = {}; + render() { + return + + + ; + } +} + +export default App; \ No newline at end of file From 96bce4fc392ac18126b05ecce75eed24296e03eb Mon Sep 17 00:00:00 2001 From: Levin Faber Date: Wed, 15 May 2019 14:02:28 +0200 Subject: [PATCH 02/22] Added Router --- Frontend/src/components/App.js | 6 +++++- Frontend/src/components/Login.js | 7 ++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Frontend/src/components/App.js b/Frontend/src/components/App.js index 37d6b9b..2b80267 100644 --- a/Frontend/src/components/App.js +++ b/Frontend/src/components/App.js @@ -1,11 +1,15 @@ import React, { Component } from "react"; import CssBaseline from "@material-ui/core/Button"; +import { BrowserRouter as Router, Route, Link } from "react-router-dom"; +import Login from "./Login.js"; class App extends Component { state = {}; render() { return - + + + ; } } diff --git a/Frontend/src/components/Login.js b/Frontend/src/components/Login.js index ab5a99a..7403794 100644 --- a/Frontend/src/components/Login.js +++ b/Frontend/src/components/Login.js @@ -5,11 +5,8 @@ import Container from '@material-ui/core/Container'; class Login extends Component { state = {}; render() { - return - - - ; + return {} } } -export default App; \ No newline at end of file +export default Login; \ No newline at end of file From 0248913e811cd793b5d12cebfba62007d08b5977 Mon Sep 17 00:00:00 2001 From: Levin Faber Date: Wed, 15 May 2019 14:21:06 +0200 Subject: [PATCH 03/22] WIP --- Frontend/src/components/App.js | 13 ++++++++++--- Frontend/src/components/Login.js | 34 +++++++++++++++++++++++++++++++--- 2 files changed, 41 insertions(+), 6 deletions(-) diff --git a/Frontend/src/components/App.js b/Frontend/src/components/App.js index 2b80267..b0b9c64 100644 --- a/Frontend/src/components/App.js +++ b/Frontend/src/components/App.js @@ -1,15 +1,22 @@ import React, { Component } from "react"; -import CssBaseline from "@material-ui/core/Button"; +import CssBaseline from "@material-ui/core/CssBaseline"; import { BrowserRouter as Router, Route, Link } from "react-router-dom"; import Login from "./Login.js"; +import { Box } from "@material-ui/core"; + class App extends Component { state = {}; render() { return - - + + + + ; } } diff --git a/Frontend/src/components/Login.js b/Frontend/src/components/Login.js index 7403794..946cbe7 100644 --- a/Frontend/src/components/Login.js +++ b/Frontend/src/components/Login.js @@ -1,11 +1,39 @@ import React, { Component } from "react"; -import Button from "@material-ui/core/Button"; -import Container from '@material-ui/core/Container'; +import TextField from '@material-ui/core/TextField'; +import Grid from '@material-ui/core/Grid'; class Login extends Component { state = {}; render() { - return {} + return ( +
+ + + + +
+ + ) } } From 09f9687dd53132c42cd356ce59a3c6d6e2991aff Mon Sep 17 00:00:00 2001 From: Kai Senkowski Date: Wed, 15 May 2019 14:24:33 +0200 Subject: [PATCH 04/22] :sparkles: added component Aufnahmeantrag --- .gitignore | 23 ++ Frontend/src/components/Aufnahmeantrag.js | 10 + package-lock.json | 361 ++++++++++++++++++++++++++++++ 3 files changed, 394 insertions(+) create mode 100644 .gitignore create mode 100644 Frontend/src/components/Aufnahmeantrag.js create mode 100644 package-lock.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4d29575 --- /dev/null +++ b/.gitignore @@ -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* diff --git a/Frontend/src/components/Aufnahmeantrag.js b/Frontend/src/components/Aufnahmeantrag.js new file mode 100644 index 0000000..d39904e --- /dev/null +++ b/Frontend/src/components/Aufnahmeantrag.js @@ -0,0 +1,10 @@ +import React, { Component } from "react"; + +class Aufnahmeantrag extends Component { + state = {}; + render() { + return <>; + } +} + +export default Aufnahmeantrag; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..44862c0 --- /dev/null +++ b/package-lock.json @@ -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" + } + } + } +} From 63e55b8b1f4b6176f1649a09d75333d65c189500 Mon Sep 17 00:00:00 2001 From: Kai Senkowski Date: Wed, 22 May 2019 11:36:09 +0200 Subject: [PATCH 05/22] =?UTF-8?q?Aufnahmeantrag=20fromular=20erg=C3=A4nzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Frontend/package-lock.json | 44 +++++ Frontend/package.json | 1 + Frontend/src/components/App.js | 23 +-- Frontend/src/components/Aufnahmeantrag.js | 285 +++++++++++++++++++++++++++++- Frontend/src/components/Login.js | 59 +++---- 5 files changed, 368 insertions(+), 44 deletions(-) diff --git a/Frontend/package-lock.json b/Frontend/package-lock.json index e7c926c..4b0ff5b 100644 --- a/Frontend/package-lock.json +++ b/Frontend/package-lock.json @@ -1179,6 +1179,15 @@ "warning": "^4.0.1" } }, + "@material-ui/icons": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-3.0.2.tgz", + "integrity": "sha512-QY/3gJnObZQ3O/e6WjH+0ah2M3MOgLOzCy8HTUoUx9B6dDrS18vP7Ycw3qrDEKlB6q1KNxy6CZHm5FCauWGy2g==", + "requires": { + "@babel/runtime": "^7.2.0", + "recompose": "0.28.0 - 0.30.0" + } + }, "@material-ui/styles": { "version": "4.0.0-beta.2", "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.0.0-beta.2.tgz", @@ -2801,6 +2810,11 @@ "supports-color": "^5.3.0" } }, + "change-emitter": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/change-emitter/-/change-emitter-0.1.6.tgz", + "integrity": "sha1-6LL+PX8at9aaMhma/5HqaTFAlRU=" + }, "chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", @@ -10428,6 +10442,11 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==" }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, "react-router": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.0.0.tgz", @@ -10593,6 +10612,26 @@ "util.promisify": "^1.0.0" } }, + "recompose": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.30.0.tgz", + "integrity": "sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w==", + "requires": { + "@babel/runtime": "^7.0.0", + "change-emitter": "^0.1.2", + "fbjs": "^0.8.1", + "hoist-non-react-statics": "^2.3.1", + "react-lifecycles-compat": "^3.0.2", + "symbol-observable": "^1.0.4" + }, + "dependencies": { + "hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + } + } + }, "recursive-readdir": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", @@ -11822,6 +11861,11 @@ "util.promisify": "~1.0.0" } }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, "symbol-tree": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", diff --git a/Frontend/package.json b/Frontend/package.json index 3e5f630..18ec3c1 100644 --- a/Frontend/package.json +++ b/Frontend/package.json @@ -4,6 +4,7 @@ "private": true, "dependencies": { "@material-ui/core": "^4.0.0-beta.2", + "@material-ui/icons": "^3.0.2", "react": "^16.8.6", "react-dom": "^16.8.6", "react-router-dom": "^5.0.0", diff --git a/Frontend/src/components/App.js b/Frontend/src/components/App.js index b0b9c64..5c0a164 100644 --- a/Frontend/src/components/App.js +++ b/Frontend/src/components/App.js @@ -3,21 +3,22 @@ import CssBaseline from "@material-ui/core/CssBaseline"; import { BrowserRouter as Router, Route, Link } from "react-router-dom"; import Login from "./Login.js"; import { Box } from "@material-ui/core"; - +import Aufnahmeantrag from "./Aufnahmeantrag.js"; class App extends Component { state = {}; render() { - return - - - - - - ; + return ( + <> + + + + + + + + + ); } } diff --git a/Frontend/src/components/Aufnahmeantrag.js b/Frontend/src/components/Aufnahmeantrag.js index d39904e..7b5d7c0 100644 --- a/Frontend/src/components/Aufnahmeantrag.js +++ b/Frontend/src/components/Aufnahmeantrag.js @@ -1,9 +1,290 @@ import React, { Component } from "react"; +import { + FormControl, + FormControlLabel, + Checkbox, + TextField, + Typography, + Grid, + Fab, + Container +} from "@material-ui/core"; +import SendIcon from "@material-ui/icons/Send"; +import { makeStyles } from "@material-ui/core/styles"; class Aufnahmeantrag extends Component { - state = {}; + state = { + Name: "", + Vorname: "", + Geburtsdatum: "", + Geburtsort: "", + PLZ: "", + Ort: "", + Strasse: "", + Hausnummer: "", + Telefon: "", + EMail: "", + BLZ: "", + Bankname: "", + KontoNr: "", + Instrument: "", + Ermaessigt: null, + Laufzeit: "", + Typ: "" + }; + + handleChange = name => event => { + this.setState({ [name]: event.target.value }); + }; + + useStyles = makeStyles(theme => ({ + textField: { + marginLeft: theme.spacing(1), + marginRight: theme.spacing(1), + width: 200 + }, + header: { + textAlign: "center" + }, + fab: { + margin: theme.spacing(1) + } + })); + render() { - return <>; + const classes = this.useStyles; + + return ( + + + + + + + Aufnahmeantrag + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + this.handleChange("Ermaessigt")} + value="Ermaessigt" + color="primary" + /> + } + label="Schüler/Student/Azubi" + /> + + + + + + Bankverbindung + + + + + + + + + + + + + + + + + + + + ); } } diff --git a/Frontend/src/components/Login.js b/Frontend/src/components/Login.js index 946cbe7..99ef2e3 100644 --- a/Frontend/src/components/Login.js +++ b/Frontend/src/components/Login.js @@ -1,40 +1,37 @@ import React, { Component } from "react"; -import TextField from '@material-ui/core/TextField'; -import Grid from '@material-ui/core/Grid'; +import TextField from "@material-ui/core/TextField"; +import Grid from "@material-ui/core/Grid"; class Login extends Component { state = {}; render() { return ( -
- - - - -
- - ) +
+ + + + ); } } -export default Login; \ No newline at end of file +export default Login; From 74c2ee475b8d1057a966e40ff4a5f555530e79e1 Mon Sep 17 00:00:00 2001 From: Kai Senkowski Date: Wed, 22 May 2019 12:52:52 +0200 Subject: [PATCH 06/22] laufzeit und typ zu selects --- Frontend/src/components/Aufnahmeantrag.js | 174 ++++++++++++++++++------------ 1 file changed, 108 insertions(+), 66 deletions(-) diff --git a/Frontend/src/components/Aufnahmeantrag.js b/Frontend/src/components/Aufnahmeantrag.js index 7b5d7c0..18215f0 100644 --- a/Frontend/src/components/Aufnahmeantrag.js +++ b/Frontend/src/components/Aufnahmeantrag.js @@ -1,16 +1,42 @@ import React, { Component } from "react"; import { - FormControl, FormControlLabel, Checkbox, TextField, Typography, Grid, Fab, - Container + Container, + FormControl, + InputLabel, + MenuItem, + Select, + OutlinedInput } from "@material-ui/core"; import SendIcon from "@material-ui/icons/Send"; -import { makeStyles } from "@material-ui/core/styles"; +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: "#f5f5f5", + borderRadius: "5px", + margin: "20px", + padding: "20px" + }, + checkbox: { + display: "flex", + alignItems: "center", + height: "100%", + marginLeft: "7px" + } +})); class Aufnahmeantrag extends Component { state = { @@ -37,34 +63,20 @@ class Aufnahmeantrag extends Component { this.setState({ [name]: event.target.value }); }; - useStyles = makeStyles(theme => ({ - textField: { - marginLeft: theme.spacing(1), - marginRight: theme.spacing(1), - width: 200 - }, - header: { - textAlign: "center" - }, - fab: { - margin: theme.spacing(1) - } - })); - render() { - const classes = this.useStyles; + const classes = this.props.classes; return ( - +
- + Aufnahmeantrag - + - + - + - + - + - + - + - + - + - + - + - - + - - - + + Laufzeit + + + + + + + className={classes.textField} + > + + Unterichtstyp + + + - - this.handleChange("Ermaessigt")} - value="Ermaessigt" - color="primary" - /> - } - label="Schüler/Student/Azubi" - /> + +
+ this.handleChange("Ermaessigt")} + value="Ermaessigt" + color="primary" + /> + } + label="Schüler/Student/Azubi" + /> +
- + Bankverbindung - + - + - +
); } } -export default Aufnahmeantrag; +export default withStyles(useStyles)(Aufnahmeantrag); From 46f35ff7eba7c5e4e3366f819ac286d8f86e1cb2 Mon Sep 17 00:00:00 2001 From: Kai Senkowski Date: Wed, 29 May 2019 07:49:20 +0200 Subject: [PATCH 07/22] added box shadow to form --- Frontend/src/components/Aufnahmeantrag.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Frontend/src/components/Aufnahmeantrag.js b/Frontend/src/components/Aufnahmeantrag.js index 18215f0..4a564a0 100644 --- a/Frontend/src/components/Aufnahmeantrag.js +++ b/Frontend/src/components/Aufnahmeantrag.js @@ -28,7 +28,8 @@ const useStyles = createStyles(theme => ({ backgroundColor: "#f5f5f5", borderRadius: "5px", margin: "20px", - padding: "20px" + padding: "20px", + boxShadow: "0px 0px 5px 0px grey" }, checkbox: { display: "flex", From bcbd943dd6991ba2f155e6eb66fbc94111108842 Mon Sep 17 00:00:00 2001 From: Kai Senkowski Date: Wed, 29 May 2019 08:32:21 +0200 Subject: [PATCH 08/22] instrument checkbox added --- Frontend/src/components/Aufnahmeantrag.js | 97 +++++++++++++++++++++---------- 1 file changed, 67 insertions(+), 30 deletions(-) diff --git a/Frontend/src/components/Aufnahmeantrag.js b/Frontend/src/components/Aufnahmeantrag.js index 4a564a0..7c1ba2d 100644 --- a/Frontend/src/components/Aufnahmeantrag.js +++ b/Frontend/src/components/Aufnahmeantrag.js @@ -29,41 +29,69 @@ const useStyles = createStyles(theme => ({ borderRadius: "5px", margin: "20px", padding: "20px", - boxShadow: "0px 0px 5px 0px grey" + boxShadow: "0px 0px 5px 0px lightgrey", + border: "1px solid grey" }, checkbox: { display: "flex", alignItems: "center", height: "100%", marginLeft: "7px" + }, + instruments: { + border: "1px solid lightgrey", + borderRadius: "5px", + display: "flex", + flexWrap: "wrap", + padding: "10px" } })); class Aufnahmeantrag extends Component { state = { - Name: "", - Vorname: "", - Geburtsdatum: "", - Geburtsort: "", - PLZ: "", - Ort: "", - Strasse: "", - Hausnummer: "", - Telefon: "", - EMail: "", - BLZ: "", - Bankname: "", - KontoNr: "", - Instrument: "", - Ermaessigt: null, - Laufzeit: "", - Typ: "" + 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({ [name]: event.target.value }); }; + handleInstrument = instrument => { + var instruments = this.state.instruments; + instruments.forEach(obj => { + if (obj === instrument) instrument.toggle = !instrument.toggle; + }); + this.setState({ instruments }); + }; + render() { const classes = this.props.classes; @@ -197,17 +225,26 @@ class Aufnahmeantrag extends Component { variant="outlined" /> - - + + + Instrumente + +
+ {this.state.instruments.map(instrument => ( + this.handleInstrument(instrument)} + value={instrument.name} + color="primary" + /> + } + label={instrument.name} + /> + ))} +
- +
Date: Wed, 29 May 2019 08:42:12 +0200 Subject: [PATCH 09/22] instrument checkbox fixed --- Frontend/src/components/Aufnahmeantrag.js | 41 +++++++++++++++++-------------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/Frontend/src/components/Aufnahmeantrag.js b/Frontend/src/components/Aufnahmeantrag.js index 7c1ba2d..eb671cc 100644 --- a/Frontend/src/components/Aufnahmeantrag.js +++ b/Frontend/src/components/Aufnahmeantrag.js @@ -81,13 +81,18 @@ class Aufnahmeantrag extends Component { }; handleChange = name => event => { - this.setState({ [name]: event.target.value }); + 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) instrument.toggle = !instrument.toggle; + 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 }); }; @@ -111,7 +116,7 @@ class Aufnahmeantrag extends Component { id="outlined-name" label="Name" className={classes.textField} - value={this.state.Name} + value={this.state.form.Name} onChange={this.handleChange("Name")} margin="normal" variant="outlined" @@ -123,7 +128,7 @@ class Aufnahmeantrag extends Component { id="outlined-name" label="Vorname" className={classes.textField} - value={this.state.Vorname} + value={this.state.form.Vorname} onChange={this.handleChange("Vorname")} margin="normal" variant="outlined" @@ -135,7 +140,7 @@ class Aufnahmeantrag extends Component { id="outlined-name" label="Geburtsdatum" className={classes.textField} - value={this.state.Geburtsdatum} + value={this.state.form.Geburtsdatum} onChange={this.handleChange("Geburtsdatum")} margin="normal" variant="outlined" @@ -147,7 +152,7 @@ class Aufnahmeantrag extends Component { id="outlined-name" label="Geburtsort" className={classes.textField} - value={this.state.Geburtsort} + value={this.state.form.Geburtsort} onChange={this.handleChange("Geburtsort")} margin="normal" variant="outlined" @@ -159,7 +164,7 @@ class Aufnahmeantrag extends Component { id="outlined-name" label="PLZ" className={classes.textField} - value={this.state.PLZ} + value={this.state.form.PLZ} onChange={this.handleChange("PLZ")} margin="normal" variant="outlined" @@ -171,7 +176,7 @@ class Aufnahmeantrag extends Component { id="outlined-name" label="Ort" className={classes.textField} - value={this.state.Ort} + value={this.state.form.Ort} onChange={this.handleChange("Ort")} margin="normal" variant="outlined" @@ -183,7 +188,7 @@ class Aufnahmeantrag extends Component { id="outlined-name" label="Strasse" className={classes.textField} - value={this.state.Strasse} + value={this.state.form.Strasse} onChange={this.handleChange("Strasse")} margin="normal" variant="outlined" @@ -195,7 +200,7 @@ class Aufnahmeantrag extends Component { id="outlined-name" label="Hausnummer" className={classes.textField} - value={this.state.Hausnummer} + value={this.state.form.Hausnummer} onChange={this.handleChange("Hausnummer")} margin="normal" variant="outlined" @@ -207,7 +212,7 @@ class Aufnahmeantrag extends Component { id="outlined-name" label="Telefon" className={classes.textField} - value={this.state.Telefon} + value={this.state.form.Telefon} onChange={this.handleChange("Telefon")} margin="normal" variant="outlined" @@ -219,7 +224,7 @@ class Aufnahmeantrag extends Component { id="outlined-name" label="EMail" className={classes.textField} - value={this.state.EMail} + value={this.state.form.EMail} onChange={this.handleChange("EMail")} margin="normal" variant="outlined" @@ -257,7 +262,7 @@ class Aufnahmeantrag extends Component { Laufzeit this.handleChange("Ermaessigt")} value="Ermaessigt" color="primary" @@ -326,7 +331,7 @@ class Aufnahmeantrag extends Component { id="outlined-name" label="BLZ" className={classes.textField} - value={this.state.BLZ} + value={this.state.form.BLZ} onChange={this.handleChange("BLZ")} margin="normal" variant="outlined" @@ -338,7 +343,7 @@ class Aufnahmeantrag extends Component { id="outlined-name" label="Bankname" className={classes.textField} - value={this.state.Bankname} + value={this.state.form.Bankname} onChange={this.handleChange("Bankname")} margin="normal" variant="outlined" @@ -350,7 +355,7 @@ class Aufnahmeantrag extends Component { id="outlined-name" label="KontoNr" className={classes.textField} - value={this.state.KontoNr} + value={this.state.form.KontoNr} onChange={this.handleChange("KontoNr")} margin="normal" variant="outlined" From df559f1b8d321b8b678fce1d0dbf025a535aaeca Mon Sep 17 00:00:00 2001 From: Kai Senkowski Date: Wed, 29 May 2019 08:46:05 +0200 Subject: [PATCH 10/22] border color changed --- Frontend/src/components/Aufnahmeantrag.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Frontend/src/components/Aufnahmeantrag.js b/Frontend/src/components/Aufnahmeantrag.js index eb671cc..a41ef4c 100644 --- a/Frontend/src/components/Aufnahmeantrag.js +++ b/Frontend/src/components/Aufnahmeantrag.js @@ -30,7 +30,7 @@ const useStyles = createStyles(theme => ({ margin: "20px", padding: "20px", boxShadow: "0px 0px 5px 0px lightgrey", - border: "1px solid grey" + border: "1px solid lightgrey" }, checkbox: { display: "flex", From 30a174af35b13c4e8241c334bfa6db44a7c3494c Mon Sep 17 00:00:00 2001 From: Kai Senkowski Date: Wed, 5 Jun 2019 07:01:05 +0000 Subject: [PATCH 11/22] :package: Update package.json version update material UI --- Frontend/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Frontend/package.json b/Frontend/package.json index 18ec3c1..a975899 100644 --- a/Frontend/package.json +++ b/Frontend/package.json @@ -3,8 +3,8 @@ "version": "0.1.0", "private": true, "dependencies": { - "@material-ui/core": "^4.0.0-beta.2", - "@material-ui/icons": "^3.0.2", + "@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", From 14da357f8b388485d4054bbe9760c8528898953d Mon Sep 17 00:00:00 2001 From: "K.A.J" Date: Wed, 12 Jun 2019 08:42:42 +0200 Subject: [PATCH 12/22] Update PROJEKTSTRUKTURPLAN --- .../LS Musikschule. PROJEKTSTRUKTURPLAN.pdf | Bin 48760 -> 48778 bytes .../LS Musikschule. PROJEKTSTRUKTURPLAN.xlsx | Bin 76634 -> 76739 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/_Dokumente/Ausgearbeitete Dokumente/LS Musikschule. PROJEKTSTRUKTURPLAN.pdf b/_Dokumente/Ausgearbeitete Dokumente/LS Musikschule. PROJEKTSTRUKTURPLAN.pdf index 59ab01e999988434b82430815b24bdf91a78842e..b90c0e437b6fd85c9a2da3939658bb7e1c2f441f 100644 GIT binary patch delta 4572 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

j!S39I{ID1dJjgn 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 Date: Wed, 12 Jun 2019 08:45:19 +0200 Subject: [PATCH 13/22] removed unused imports --- Frontend/src/components/App.js | 2 +- Frontend/src/components/Login.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Frontend/src/components/App.js b/Frontend/src/components/App.js index 5c0a164..7bed80f 100644 --- a/Frontend/src/components/App.js +++ b/Frontend/src/components/App.js @@ -1,6 +1,6 @@ import React, { Component } from "react"; import CssBaseline from "@material-ui/core/CssBaseline"; -import { BrowserRouter as Router, Route, Link } from "react-router-dom"; +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"; diff --git a/Frontend/src/components/Login.js b/Frontend/src/components/Login.js index 99ef2e3..76bdfd0 100644 --- a/Frontend/src/components/Login.js +++ b/Frontend/src/components/Login.js @@ -1,6 +1,5 @@ import React, { Component } from "react"; import TextField from "@material-ui/core/TextField"; -import Grid from "@material-ui/core/Grid"; class Login extends Component { state = {}; From e4c359fab56cb4493788d027fb999d280d5e269b Mon Sep 17 00:00:00 2001 From: Kai Senkowski Date: Wed, 12 Jun 2019 06:49:38 +0000 Subject: [PATCH 14/22] Added Aufnahmeantrag Endpoints.md --- _Dokumente/Ausgearbeitete Dokumente/Endpoints.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/_Dokumente/Ausgearbeitete Dokumente/Endpoints.md b/_Dokumente/Ausgearbeitete Dokumente/Endpoints.md index ef9d281..b57f47a 100644 --- a/_Dokumente/Ausgearbeitete Dokumente/Endpoints.md +++ b/_Dokumente/Ausgearbeitete Dokumente/Endpoints.md @@ -133,3 +133,23 @@ - Parameter - KursID string - PersonID string + +### Aufnahmeantrag +-GET Instrumente + -Instrumente Array +-POST Aufnahmeantrag + - Name string + - Vorname string + - istErmaesigt bool + - Geburtsdatum DT + - Geburtsort string + - PLZ string + - Ort string + - StrasseHNR string + - Bankname string + - BLZ string + - KontoNr string + - Typ string + - Instrumente Array + - Laufzeit + \ No newline at end of file From 536dd4b7a7b55d4b691df9f9b1f6e1c15af30fa6 Mon Sep 17 00:00:00 2001 From: Kai Senkowski Date: Wed, 12 Jun 2019 06:50:27 +0000 Subject: [PATCH 15/22] Update Endpoints.md --- _Dokumente/Ausgearbeitete Dokumente/Endpoints.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_Dokumente/Ausgearbeitete Dokumente/Endpoints.md b/_Dokumente/Ausgearbeitete Dokumente/Endpoints.md index b57f47a..fac3a41 100644 --- a/_Dokumente/Ausgearbeitete Dokumente/Endpoints.md +++ b/_Dokumente/Ausgearbeitete Dokumente/Endpoints.md @@ -135,9 +135,9 @@ - PersonID string ### Aufnahmeantrag --GET Instrumente - -Instrumente Array --POST Aufnahmeantrag +- GET Instrumente + - Instrumente Array +- POST Aufnahmeantrag - Name string - Vorname string - istErmaesigt bool From 1aa54c18f2abc13f9cfd27f9097290c82e9fa9e5 Mon Sep 17 00:00:00 2001 From: Levin Faber Date: Wed, 12 Jun 2019 09:05:03 +0200 Subject: [PATCH 16/22] Changed nginx to serve --- Docker/Dockerfile_FE_Host.dockerfile | 13 +- Frontend/package-lock.json | 234 +++++++++++++++++------------------ 2 files changed, 123 insertions(+), 124 deletions(-) diff --git a/Docker/Dockerfile_FE_Host.dockerfile b/Docker/Dockerfile_FE_Host.dockerfile index a6ab77c..90c2600 100644 --- a/Docker/Dockerfile_FE_Host.dockerfile +++ b/Docker/Dockerfile_FE_Host.dockerfile @@ -1,5 +1,14 @@ # Tag: frontend-serve -FROM nginx +# FROM nginx -COPY Docker/config/nginx.conf /etc/nginx/nginx.conf +# 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"] \ No newline at end of file diff --git a/Frontend/package-lock.json b/Frontend/package-lock.json index 4b0ff5b..bf94b16 100644 --- a/Frontend/package-lock.json +++ b/Frontend/package-lock.json @@ -1154,68 +1154,82 @@ } }, "@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==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.1.0.tgz", + "integrity": "sha512-dpS7OvW4eBInskB3l72htaBY+3VFfgEs0UiNczyJyqb6SjymVx7ymi0BnwfUOWJYwPq0jfRqPddy0ThADBqvHQ==", "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", + "@material-ui/styles": "^4.1.0", + "@material-ui/system": "^4.1.0", + "@material-ui/types": "^4.1.0", + "@material-ui/utils": "^4.1.0", "@types/react-transition-group": "^2.0.16", "clsx": "^1.0.2", - "convert-css-length": "^1.0.2", - "csstype": "^2.5.2", + "convert-css-length": "^2.0.0", "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", + "is-plain-object": "^3.0.0", + "normalize-scroll-left": "^0.2.0", "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" + }, + "dependencies": { + "is-plain-object": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", + "requires": { + "isobject": "^4.0.0" + } + }, + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==" + } } }, "@material-ui/icons": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-3.0.2.tgz", - "integrity": "sha512-QY/3gJnObZQ3O/e6WjH+0ah2M3MOgLOzCy8HTUoUx9B6dDrS18vP7Ycw3qrDEKlB6q1KNxy6CZHm5FCauWGy2g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.1.0.tgz", + "integrity": "sha512-EwlS/D3O1lBEFBBOwBJgcV3c9zkLYy6GpJzBFL4i8rpkwfpWAE2dvz2TGsHfftfR60tiiLpZJhngBL7NJYnRng==", "requires": { - "@babel/runtime": "^7.2.0", - "recompose": "0.28.0 - 0.30.0" + "@babel/runtime": "^7.2.0" } }, "@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==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.1.0.tgz", + "integrity": "sha512-GMv/8UcfZv5P9Cl2eR+HbyJwCnrYOeDRW3BALCGZgQ7nBiQTQnrhXxA1MprBoRBPl5KiD2kQJdjbdkvT8OSfNg==", "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", + "@material-ui/types": "^4.1.0", + "@material-ui/utils": "^4.1.0", "clsx": "^1.0.2", + "csstype": "^2.5.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", + "jss": "10.0.0-alpha.17", + "jss-plugin-camel-case": "10.0.0-alpha.17", + "jss-plugin-default-unit": "10.0.0-alpha.17", + "jss-plugin-global": "10.0.0-alpha.17", + "jss-plugin-nested": "10.0.0-alpha.17", + "jss-plugin-props-sort": "10.0.0-alpha.17", + "jss-plugin-rule-value-function": "10.0.0-alpha.17", + "jss-plugin-vendor-prefixer": "10.0.0-alpha.17", "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==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.1.0.tgz", + "integrity": "sha512-1v/J2X820CzYhiH46z9qcbd+AVcQ+578ycsHAo6MVpu5eI399S6t+OcO6vg0FPhCrLshWynNGNfeF0JcLlrYzA==", "requires": { "@babel/runtime": "^7.2.0", "deepmerge": "^3.0.0", @@ -1224,14 +1238,14 @@ } }, "@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==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-4.1.0.tgz", + "integrity": "sha512-F4z7GOAeEucPjrrhJ2PHBhMZjhggE6Jjnzmap5W2PdZ3TSWNlqucB+oOzT6EzWRkHDDhVmANMU8QMfT/kcZtOg==" }, "@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==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.1.0.tgz", + "integrity": "sha512-muwmVU799tzPjzb+Q5E/CTDle0rXwkCAdvMVyU0BfbJhenkUsFmuYiCmbvMVOU1m6F1S5HWfXz8EP4pXwwAvrw==", "requires": { "@babel/runtime": "^7.2.0", "prop-types": "^15.7.2", @@ -1438,18 +1452,18 @@ "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==" }, "@types/react": { - "version": "16.8.17", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.17.tgz", - "integrity": "sha512-pln3mgc6VfkNg92WXODul/ONo140huK9OMsx62GlBlZ2lvjNK86PQJhYMPLO1i66aF5O9OPyZefogvNltBIszA==", + "version": "16.8.19", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.19.tgz", + "integrity": "sha512-QzEzjrd1zFzY9cDlbIiFvdr+YUmefuuRYrPxmkwG0UQv5XF35gFIi7a95m1bNVcFU0VimxSZ5QVGSiBmlggQXQ==", "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==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-2.9.2.tgz", + "integrity": "sha512-5Fv2DQNO+GpdPZcxp2x/OQG/H19A01WlmpjVD9cKvVFmoVLOZ9LvBgSWG6pSXIU4og5fgbvGPaCV5+VGkWAEHA==", "requires": { "@types/react": "*" } @@ -2810,11 +2824,6 @@ "supports-color": "^5.3.0" } }, - "change-emitter": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/change-emitter/-/change-emitter-0.1.6.tgz", - "integrity": "sha1-6LL+PX8at9aaMhma/5HqaTFAlRU=" - }, "chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", @@ -3620,9 +3629,9 @@ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-css-length/-/convert-css-length-2.0.0.tgz", + "integrity": "sha512-ygBgHNzImHJ/kjgqdzC0oaY2+EMID3s88/CZD2C9O1stM3PwsOwXzzlFTTkZy/bPZe0wjyt1UoYjilfunQGjlw==", "requires": { "console-polyfill": "^0.1.2", "parse-unit": "^1.0.1" @@ -4025,9 +4034,9 @@ } }, "csstype": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.4.tgz", - "integrity": "sha512-lAJUJP3M6HxFXbqtGRc0iZrdyeN+WzOWeY0q/VnFzI+kqVrYIzC7bWlKqCW7oCIdzoPkvfp82EVvrTlQ8zsWQg==" + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.5.tgz", + "integrity": "sha512-JsTaiksRsel5n7XwqPAfB0l3TFKdpjW/kgAELf9vrb5adGA7UCPLajKK5s3nFrcFm3Rkyp/Qkgl73ENc1UY3cA==" }, "cyclist": { "version": "0.2.2", @@ -7821,9 +7830,9 @@ } }, "jss": { - "version": "10.0.0-alpha.16", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.0.0-alpha.16.tgz", - "integrity": "sha512-HmKNNnr82TR5jkWjBcbrx/uim2ief588pWp7zsf4GQpL125zRkEaWYL1SXv5bR6bBvAoTtvJsTAOxDIlLxUNZg==", + "version": "10.0.0-alpha.17", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.0.0-alpha.17.tgz", + "integrity": "sha512-egGIUg+YRu0+U+XXlD0gmVtU/gW5sn7+qmDv7opwK5s8emZBE/VoN55X6CaMrAa0kLeGMldnI43KOWea6M9/mA==", "requires": { "@babel/runtime": "^7.3.1", "is-in-browser": "^1.1.3", @@ -7831,69 +7840,69 @@ } }, "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==", + "version": "10.0.0-alpha.17", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.0.0-alpha.17.tgz", + "integrity": "sha512-aPY4kr6MwliH7KToLRzeSk1NxXUo9n7MQsAa0Hghwj01x9UnMkDkGAKENMKUtPjGkQZfiJpB9tTLFrSJ/6VrIQ==", "requires": { "@babel/runtime": "^7.3.1", "hyphenate-style-name": "^1.0.3", - "jss": "10.0.0-alpha.16" + "jss": "10.0.0-alpha.17" } }, "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==", + "version": "10.0.0-alpha.17", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.0.0-alpha.17.tgz", + "integrity": "sha512-KQgiXczvzJ9AlFdD8NS7FZLub0NSctSrCA9Yi/GqdsfJg4ZCriU4DzIybCZBHCi/INFGJmLIESYWSxnuhAzgSQ==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.0.0-alpha.16" + "jss": "10.0.0-alpha.17" } }, "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==", + "version": "10.0.0-alpha.17", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.0.0-alpha.17.tgz", + "integrity": "sha512-WYxiwwI+CLk0ozW8loeceqXBAZXBMsLBEZeRwVf9WX+FljdJkGwVZpRCk6LBX4aXnqAGyKqCxIAIJ3KP2yBdEg==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.0.0-alpha.16" + "jss": "10.0.0-alpha.17" } }, "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==", + "version": "10.0.0-alpha.17", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.0.0-alpha.17.tgz", + "integrity": "sha512-onpFqv904KCujryf2t6IIV1/QoB7cSF7ojrd4UujcN5TPvYOvXF5bchi7jnHG5U0SLlRSDGMLJ9fhtoCknhEbw==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.0.0-alpha.16", + "jss": "10.0.0-alpha.17", "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==", + "version": "10.0.0-alpha.17", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.0.0-alpha.17.tgz", + "integrity": "sha512-KnbyrxCbtQTqpDx2mSZU/r/E5QnDPIVfIxRi8K+W/q4gZpomBvqWC+xgvAk9hbpmA6QBoQaOilV8o12w2IZ6fg==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.0.0-alpha.16" + "jss": "10.0.0-alpha.17" } }, "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==", + "version": "10.0.0-alpha.17", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.0.0-alpha.17.tgz", + "integrity": "sha512-8AuJB44Q+ehfkWVRi2XlRbUf6SrLmrHTa5EXd6dgQRCCRuvGmqX8Dl4fZvNeKRFjTLPZgzg9+31rqeOMhKa2vA==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.0.0-alpha.16" + "jss": "10.0.0-alpha.17" } }, "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==", + "version": "10.0.0-alpha.17", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.0.0-alpha.17.tgz", + "integrity": "sha512-wDq9EL0QaoMGSGifPEBb+/SA9LBcqPEW0jpL9ht+Z2t+lV7NNz0j7uCEOuE6FvNWqHzUKTsiATs1rTHPkzNBEQ==", "requires": { "@babel/runtime": "^7.3.1", "css-vendor": "^2.0.1", - "jss": "10.0.0-alpha.16" + "jss": "10.0.0-alpha.17" } }, "jsx-ast-utils": { @@ -8655,9 +8664,9 @@ "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" }, "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==" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-scroll-left/-/normalize-scroll-left-0.2.0.tgz", + "integrity": "sha512-t5oCENZJl8TGusJKoCJm7+asaSsPuNmK6+iEjrZ5TyBj2f02brCRsd4c83hwtu+e5d4LCSBZ0uoDlMjBo+A8yA==" }, "normalize-url": { "version": "3.3.0", @@ -10442,11 +10451,6 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==" }, - "react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - }, "react-router": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.0.0.tgz", @@ -10552,13 +10556,24 @@ } }, "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==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.1.1.tgz", + "integrity": "sha512-K/N1wqJ2GRP2yj3WBqEUYa0KV5fiaAWpUfU9SpHOHefeKvyrO+VrnMBML21M19QZoVbDZKmuQFHZYoMMi1xuJA==", "requires": { + "@babel/runtime": "^7.4.5", "dom-helpers": "^3.4.0", "loose-envify": "^1.4.0", "prop-types": "^15.6.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.5.tgz", + "integrity": "sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==", + "requires": { + "regenerator-runtime": "^0.13.2" + } + } } }, "read-pkg": { @@ -10612,26 +10627,6 @@ "util.promisify": "^1.0.0" } }, - "recompose": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.30.0.tgz", - "integrity": "sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w==", - "requires": { - "@babel/runtime": "^7.0.0", - "change-emitter": "^0.1.2", - "fbjs": "^0.8.1", - "hoist-non-react-statics": "^2.3.1", - "react-lifecycles-compat": "^3.0.2", - "symbol-observable": "^1.0.4" - }, - "dependencies": { - "hoist-non-react-statics": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", - "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" - } - } - }, "recursive-readdir": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", @@ -11861,11 +11856,6 @@ "util.promisify": "~1.0.0" } }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" - }, "symbol-tree": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", From 9a8e8adafda2d6f1bf0d5d4dffc8fb409e82d55c Mon Sep 17 00:00:00 2001 From: Levin Faber Date: Wed, 12 Jun 2019 09:07:33 +0200 Subject: [PATCH 17/22] change restart host --- Docker/config/restart-host.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Docker/config/restart-host.sh b/Docker/config/restart-host.sh index 8bbabfe..abdc7a9 100755 --- a/Docker/config/restart-host.sh +++ b/Docker/config/restart-host.sh @@ -3,5 +3,5 @@ docker login -u gitlab+deploy-token-66068 -p vD23SzzitUn8y8xGknKz registry.gitla 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:80 -v /home/gitlab/serve:/usr/share/nginx/html:ro --name "eva_frontend_serve" registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-serve +docker run -d -p 8083:80 -v /home/gitlab/serve:/opt/frontend/build:ro --name "eva_frontend_serve" registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-serve From a8b6fdba05f35b072991133c504c52a462f00127 Mon Sep 17 00:00:00 2001 From: Levin Faber Date: Wed, 12 Jun 2019 09:09:49 +0200 Subject: [PATCH 18/22] Restart host --- Docker/config/restart-host.sh | 2 +- _Dokumente/Protokolle/2019-06-12_Protokoll.md | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Docker/config/restart-host.sh b/Docker/config/restart-host.sh index abdc7a9..7f47642 100755 --- a/Docker/config/restart-host.sh +++ b/Docker/config/restart-host.sh @@ -3,5 +3,5 @@ docker login -u gitlab+deploy-token-66068 -p vD23SzzitUn8y8xGknKz registry.gitla 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:80 -v /home/gitlab/serve:/opt/frontend/build:ro --name "eva_frontend_serve" 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 diff --git a/_Dokumente/Protokolle/2019-06-12_Protokoll.md b/_Dokumente/Protokolle/2019-06-12_Protokoll.md index a779b42..e8b7fc5 100644 --- a/_Dokumente/Protokolle/2019-06-12_Protokoll.md +++ b/_Dokumente/Protokolle/2019-06-12_Protokoll.md @@ -12,8 +12,9 @@ _Ort: Schule_ * Was soll alles im Prototyp enthalten sein? ## Ergebnisse -* Punkt 1 +* +* Pflichtenheft ist abgegeben ## Resultierende Aufgaben |Aufgabe|Verantwortlicher|Erledigt| -|-|-|-| \ No newline at end of file +|Pflichtenheft|Levin|Ja| \ No newline at end of file From 5aca92512f3975775a7790d4e112e5a9e91827e9 Mon Sep 17 00:00:00 2001 From: Levin Faber Date: Wed, 12 Jun 2019 09:12:32 +0200 Subject: [PATCH 19/22] Fixed ci --- .gitlab-ci.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fccd567..47e5e8f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,9 +1,10 @@ stages: - - build + - build_docker + - build_frontend build_frontend: - stage: build + stage: build_frontend tags: - docker image: registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-build @@ -29,7 +30,7 @@ build_frontend: url: https://$DEPLOY_ENV_TARGET build_docker_host: - stage: build + stage: build_docker tags: - docker-builder before_script: @@ -51,7 +52,7 @@ build_docker_host: - Docker/config/* build_docker_builder: - stage: build + stage: build_docker tags: - docker-builder before_script: From e0ea0bdce1312f91f44311de639b8a1b1e8dca11 Mon Sep 17 00:00:00 2001 From: Tobi Date: Wed, 12 Jun 2019 09:15:21 +0200 Subject: [PATCH 20/22] =?UTF-8?q?:books:=20Protokoll=20und=20Endpoints=20?= =?UTF-8?q?=C3=BCberarbeitet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _Dokumente/Ausgearbeitete Dokumente/Endpoints.md | 142 ++++++++++++++--------- _Dokumente/Protokolle/2019-06-12_Protokoll.md | 12 +- 2 files changed, 99 insertions(+), 55 deletions(-) diff --git a/_Dokumente/Ausgearbeitete Dokumente/Endpoints.md b/_Dokumente/Ausgearbeitete Dokumente/Endpoints.md index fac3a41..8cb0c2b 100644 --- a/_Dokumente/Ausgearbeitete Dokumente/Endpoints.md +++ b/_Dokumente/Ausgearbeitete Dokumente/Endpoints.md @@ -1,34 +1,57 @@ # Endpoints -## Screens +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 +- 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 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 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 + - Inhalt der letzten UE wird gesetzt + - Parameter - KursID string - - content string + - Content string ### Welcher Lehrer Welcher Kurs (Verwaltung) - GET course_teacher_match -- Liefert Array + - Liefert Array - KursID string - KursName string - DozentID string @@ -36,7 +59,7 @@ ### Welche Schüler Welcher Kurs (Verwaltung) - GET course_student_match -- Liefert Array + - Liefert Array - KursID string - KursName string - DozentID string @@ -44,75 +67,82 @@ ### Lehrerübersicht (Verwaltung) - GET all_teachers -- Liefert Array + - Liefert alle Dozenten + - Liefert Array - DozentID string - DozentName string ### Schüler von Lehrer (Dozent und Verwaltung) - GET students_of_teacher -- Parameter DozentID -- Liefert Array + - Parameter DozentID + - Liefert Array - StundentID string - StudentName string ### Raumübersicht (Verwaltung) - GET rooms -- Liefert Array + - Liefert alle verfügbaren Räume, inkl. der vorhandenen Instrumente + - Liefert Array - RaumID string - RaumName string - Instrumente Array - - InstrumentName string -- GET instruments -- Liefert Array - - InstrumentName string + - InstrumentID string + - InstrumentName string - PUT create_rooms + - Parameter - RaumName string - Instrumente Array + - InstrumentID string - ### Raumdetails (Verwaltung) - GET room_free -- Parameter RaumID -- Liefert Frei bool + - Liefert alle aktuell freien Räumen + - Parameter + - RaumID string + - Liefert object + - Belegt bool - GET room_instruments -- Parameter RaumID -- Liefert Array + - Liefert alle Instrumente zu einem Raum + - Parameter + - RaumID string + - Liefert Array + - InstrumentID string - InstrumentName string - Vorhanden bool - GET lessons -- Parameter + - Liefert alle Unterrichtszeiten in einem Raum + - Parameter - RaumID string - - Sort // Maybe wenn benötigt -- Liefert Array - - StartZeit DT + - Liefert Array + - StartZeit DateTime - -### Kurs Erstellen [Person + Kurs] -- nutzt GET instruments -- GET create_ +### Kurs Erstellen [Person + Kurs] (Verwaltung) - POST get_capable_teachers -- Parameter + - Liefert alle Dozenten, die einen bestimmten Kurs leiten können + - Parameter - Typ string - Instrumente Array -- Liefert Array + - InstrumentID string + - Liefert Array - DozentID string - DozentName string - POST get_cross_referenced_rooms -- Parameter + - Parameter - Typ string - Instrumente Array - - InstrumentName string + - InstrumentID string - DozentID string -- Liefert Array + - Liefert Array - RaumID string - Zeiten Array - - Zeitfenster number + - Zeit DateTime - POST create_person -- Parameter + - Erstellt eine Person + - Parameter - Name string - Vorname string - - istErmaesigt bool - - Geburtsdatum DT + - IstErmaessigt bool + - Geburtsdatum DateTime - Geburtsort string - PLZ string - Ort string @@ -120,28 +150,30 @@ - Bankname string - BLZ string - KontoNr string + - Liefert object + - StudentID string - POST create_course -- Parameter - // Kursdaten + - Erstellt einen Kurs + - Parameter - Typ string - Instrumente Array - - Instrument string + - InstrumentID string - DonzentID string - Unterrichtseinheiten Array - - Zeit int + - Zeit int - POST enroll_student -- Parameter + - Ordnet einen Schueler einem Kurs zu + - Parameter - KursID string - - PersonID string + - StudentID string -### Aufnahmeantrag -- GET Instrumente - - Instrumente Array -- POST Aufnahmeantrag +### Aufnahmeantrag (Anonymous) +- POST aufnahmeantrag + - Parameter - Name string - Vorname string - - istErmaesigt bool - - Geburtsdatum DT + - IstErmaessigt bool + - Geburtsdatum DateTime - Geburtsort string - PLZ string - Ort string @@ -151,5 +183,11 @@ - KontoNr string - Typ string - Instrumente Array + - InstrumentID string - Laufzeit - \ No newline at end of file + - KursID string + ### Instrumente (Anonymous) +- GET instruments + - Liefert Instrumente Array + - InstrumentID string + - InstrumentName string \ No newline at end of file diff --git a/_Dokumente/Protokolle/2019-06-12_Protokoll.md b/_Dokumente/Protokolle/2019-06-12_Protokoll.md index a779b42..831e2fa 100644 --- a/_Dokumente/Protokolle/2019-06-12_Protokoll.md +++ b/_Dokumente/Protokolle/2019-06-12_Protokoll.md @@ -5,14 +5,20 @@ _Teilnehmer: Levin Faber, Alexej Komnik, Tobias Schiffarth, Kai Senkowski_ _Ort: Schule_ ## Agenda -* Projetkstrukturplan und Zeitplan +* Projektstrukturplan und Zeitplan * Pflichtenheft * Abgabe Use-Case-Diagramm * Endpoints -* Was soll alles im Prototyp enthalten sein? +* Enthaltene Funktionen im Prototyp? ## Ergebnisse -* Punkt 1 +* 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| From 517e31a638855670a097e64ecf73cb62d0116fc6 Mon Sep 17 00:00:00 2001 From: Levin Faber Date: Wed, 12 Jun 2019 07:40:58 +0000 Subject: [PATCH 21/22] :green_heart: Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fccd567..75ca7d5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,6 +24,9 @@ build_frontend: - 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 From 2e83797af037235ac91347e10bac8ab1c63436d2 Mon Sep 17 00:00:00 2001 From: "K.A.J" Date: Wed, 12 Jun 2019 11:20:21 +0200 Subject: [PATCH 22/22] Update PROJEKTSTRUKTURPLAN --- .../LS Musikschule. PROJEKTSTRUKTURPLAN.pdf | Bin 48778 -> 74211 bytes .../LS Musikschule. PROJEKTSTRUKTURPLAN.xlsx | Bin 76739 -> 77140 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/_Dokumente/Ausgearbeitete Dokumente/LS Musikschule. PROJEKTSTRUKTURPLAN.pdf b/_Dokumente/Ausgearbeitete Dokumente/LS Musikschule. PROJEKTSTRUKTURPLAN.pdf index b90c0e437b6fd85c9a2da3939658bb7e1c2f441f..dfc588031ac67dd00fceddbcad6e65f5ede24585 100644 GIT binary patch delta 47879 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 delta 22796 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

ny(j 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 LgzW5!>QDa*J?WUI diff --git a/_Dokumente/Ausgearbeitete Dokumente/LS Musikschule. PROJEKTSTRUKTURPLAN.xlsx b/_Dokumente/Ausgearbeitete Dokumente/LS Musikschule. PROJEKTSTRUKTURPLAN.xlsx index fbeee1a10fae29ee07f549281582e8f7e84d9217..e2ccdae0761cb0b6da6aac0f9c1774581196dc3c 100644 GIT binary patch delta 16677 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 Uu=!;+>VGL(8XA5%stcO`1MkJ3)&Kwi delta 14982 zcmc(GXIK+!)GY}eq*?%_x6ly~>AgrOA}FBJ1OdeYQk0$nEQp{4hN2+VC?e7f(gPyW zRHTVW2aytb3BBYF=<%qh>36^TT>tpYKVH7ttB)UEvwl?A1gBM7Oez8niEIp9$9rfi3%4KIc>;NJgIp26ialR z_f^K%ji+uN7?KLpwqkkuejj7K`;(yZ*WM2m^LaOSSZNFeSf9uf5(zv$cYnNg&#ni& z^o`~Z(Vq9TKGMya@C~rMNS5DU)N{Dsx6rKev~aZE0!+PYU(56-#2uqL8=Ckfg=O}r zGX}uo3nMzOrw%hZ=9ToK-Y~v*h0RoYnQi)1^=rKG6@$Z{9#ln-OgQmbYiEuzh#Nk1 z4|jh;K)#eU&@EzkbR3H#KVbpJkMv(g_S5GD4GQ^-P&Xk-lE@$z`n$upLztfNeezFbA9)<^S< zh^IbtnuGNnHnI2mb|g-BkX^X*YTvsLV>+fa+7058JM(TZvU3IdP8fz2oyxWx5jXav zh@W6sEq#8p#)56XV9>}til}V6gD?HU)98Q)Y*w*si>w_vLeE1akDNbqtbk6Y;{F4- zLh%1<`Bf2@RgqKYK&i+i-xJ?P>Ff zexZzBEa`Zt+Ff~E>Ukd-X{@re=hJ%r88Nl^g>}`?M~Kb0(GC7bU)EfRLd`yA{W#eb zEkd9(r03D>d`A3qN{f$JWT$mO->p2to!)kt6OS&ooexC`C>(Y= zSH9NGt)915etfr1+X=&=^z?nSlFB5+!074C@#JX~FcXo0~?!mT@%E`xq+(@$Ipx4|PG$rHaXf^$Q2~^%jjvV#!20CaSSxAb zz((yf*XAO=m8(zHmoVGlYB6mCtPih7WG<~H+GeYj`E4MH^Hn(!s++R|V+)OPl(@Bx z=ApsbMlPJ+#^Od*D_i--jKE0I=1^RrYj#1q>!!cg!e%R;pDP;$Y#`f-gRZW`WpBR% zFW2(Vp3vsN^0XRpxhrAZ3mDy{hTGVfOb2@I69%qA3vQzVfQ^9#n=I!mls9s#a{J`qqf@E@e^F6M_Y#G5nT+jvv=dxfM~dG&(=4R$(SmTRKu1l4%Qpz7*z~Zjocd+1@RN@3q-ja9bRw|I3s>S{$qh;CYKNeNJf0v7sh7q~=5 zof^`|)mk!bRWD|vh}Ll{5Mb@Ds<@3>vsA}EwRQYzYx=lXZC{0tX8`lY+`uZ)3Rh8V zF2{1Yti0Akf+hK|yP~u2tmYwr*w}DeadUP4wyI55m(nTJ_@Z2dPLG8eZqxf=X+E$v zpWf%`c$pR`UmaRVt^nd8g~c_h`d!|z@LpJK@4F*sv^v}vQL>t>)7L%tV6ZEh_#C&o ztjl1~!&m#@^7URTV)mLj(SK%Y(hX>?8e32^UK+r^OzyUNi@#RbJ_7jn;~6h|d)zGF zysY?nu3An~)i%^G!o)?cc65AFia2FYpes?(wyjvU_Y`os)7&nJyE`(XMOX-v)a@He z2-~{Bda+Y3WOSUx_HE|8)avR(77wuz!p3{a^5tL&Rf|jhLWvdW#Hlq8x30=r7F(1_ zp@7vorLa|Z!KL+TU?pwy;-lJ->WtP>*U2}oQw@Y>yoMWg<$^8XyHVxEl}+?b>9O^y zJ*4va`G}RjUq&lCmy5A&zysGh7S(=&o>J1tbnVW>!peQivt%VBo;4AjPd8_)hTcqb zZfGUEN|={QXpKV1Mc@XJ1@uZGIIVuhq<;JesEcZ_4|&A{EPzh*lxqB5LhSk>uT!s_ zWj`76F4c>bT{py;A|kqa(ijZcz_)1<+^=ToM2z157HWCRCq-nsfizg0bMh`mg;ke&FjKC&vobm{^@G@5V3ZSAkeV*1Qw4%dE*WB{FnaXn3KLkRC z(;bqzIit2?z&l=t>P*x5)J93k355U;8+RFsqEJWL4nSk^OtD|gzWYN{0_VK<^b9w$ zOf~Yz3#q>8X+054Ys}MeVk&8#9%b?QC*Z!|X42qxZa{6=zk1P4xgjlH=Ivqx_U%E& zI{IfJWN1ca4SPK}lBWYHaYiY$ucb z=_d}j1smW>iW6>pWI&7vq%#dS9Qe#{ynub*b2Lf?F?s3zX3_(R$;Tvzt}n4Kyhq&v zDm7*UESgZ>hc6xT-E*m_Ka|a!Qa2x<7xRWtJ4N03XSfpUdr=J43cMz zkB#WWVb6%P+{s6fW6--I?M*fHksbGv-X>u$WqRnrgn4#jZX7`GY0>blBVprdwTdlf zr}Pq4z6x-J4Bi^7?~(ZsQRul8{k-_$O3|W!KgVRzIb#|<9%0^U%(dvKXO<;?%>n%l z?~vpf{AQT=_vn+RhsKbk&iqESCu=;|n|+jx^M#4&9>mtiu1t;hrjlMCto1r_C$z!I z^^EV6j>eG@Sn^13cJW&FO4WxWe8lxBppEOw&bTc#?&JF_gZ#3rxiV(Gn^M`JdiV| zZ9ILei=(ghXsJvm2shQcr6(oK^AIx;J3QO(G%{j_^-JT9!Q46q?lmLOvP9X#6?$LiS{-GH z^64VP6_uTwalL-`FQ#@(ruoDasm;$n(TO>3=5F>kkq&P~%3Jbhq+#N8`D&=Ur#c+f zX#gaXu%G}YI=ZJtnX`Lhz3dzlgL#aVS>!oWt#e3@31r=Hpi~^Zn>cbHxSw-3G+P3l8}0ll$a0+v8Tt5Xg~^ptg9p zl(-R!i+$t5(y;FpE-u+ZeDA9#QJEs9M&|%M@eIBNOwfU-N95xBlPMZc zXIkP)87?n}TzhwZ*d*y}-h-e;IW9A+G8fvfs_Uu;U=#riZ+@%BZQ z>O^Oo?t8=4iD&bygBDp*0(V96ni}fs2@97#^ieMASn+A&<$Nkq{Dij+bK`xKqN(v- zJwE4?O}v}{PPpXtmCGJUL*WatPP5%D>qjHf>o@F6OL8r=OXuC@nX1JbmJ(^#?8G5( z18S{1{l&MjOKt0Qj_Y3 ziibY#BWClT4gVU>ReE-D=U|Up;o6}WW&;6dD)N&>`8ZkTCm^D&Vjvyu@0L}V&I&#jwMFpv z{E}KaYXbGu8{!S5gV#38&gCh&0h*0wFkyZj%-v|Tsp%Did2jjDe~QIuG=dA0=k?Up znUeuQfEe$oSIv7?YAw@uU)6YY`XJ)%Y*i`Pmwn4S`)(%l7j%4#?mwN+7SO5IeCLP6dA@BB9O=>gOS%F7#}HI7$h zEx$D=V7o)HeI}{rA;(-hhThwveo~JT&qL~P&Cufnf10sW-#mTwQ2RP^E#as*(Td<4 zsJu2PbR2tqg4<7zgqnwm{{}yLSCj@ln%z`gUynS4hYoYy6U`~Du3L8?&QW0L-SvuW zW}*@|>b;-Bq9O{qsO%q@TkevhVT(Nxr9VB_X*Z{@j1Pks#}M80h+^sfts6#Kll}zEJ{=EsF`tN7J`xQPff0 z8-DimbFc7JyP13Z*>{^Wbvxt!16truZ1t!1wWEe?+~beE6LsrQcKa#Pe-6~IHrKW= zZrPS}cJM#n@B6n)EJRrY0<6WH#O_Xes?uK-&WU;)Uwcj_+0k}{#4pny)2(!QqeOqd zcR+BZ=yz%Z{#9=JQygU|Yk|8s)yj$8&wh<^9Rc5YR944$Lq;s{hTAFU-=zY4ua)rz zn`HY%nqTMI0oO4;>l$zp^_1+F>+VFoFSdPfgf)x#txcX2@Qa0~{~-Z4_MpXv`o9wT z&3u3##k-Zz(YH1{zs~DZIlq8g9ik3D7uG+^b-^jeSjzAE1@0{u0KS`3|H%c+pY={G z2s`EcvQ35QCuPa`;S}2Dh#jO@i>LomNx+Xa55?BF|Bu*yH8i&02<^=lk*ZaYn!l7A z@ZE_04@SK$m@{{Ang`M14wM~Qa6PI}ZYlmC40?xq;Ab@4R8vHc&Y4>rbCrOGNozhT z785<;y12RnYf(q>pEU#g;geh1xBFe~%lx)fZu}$_V9SL6RV%;6$FVtoNWoC)6VH^~ z#o0IfXLAC+d>V+^lJT9NV*BsVzRCDkrK0e&RDgf$w%b~%{ic;)l*-8ONCnu|3i~f< z<$I}|{#~hf{Jm6wzn>Ox-50RC!Rzr%-)fMk0DuJ``A->yV~ zFO>-V+T6QUiRG_;H~F~#NFK@^_{p`Ie_M>dJ+K&jFGk?M=JstdhW@q~f0YklYs}wn z@Lvh}B|gIRZN4=4-%eii`{beAfq(tbvYq_(-%UQ}H!2bMlKk$U`@(; zC#jlZe)7+mV34pp12=;F03YpHoW^wZX+vKmh~BTta8`FuldnvFSS>3Y+=b2oD@A3X z=c%Zh!o^Y+YN}WwKnY<@2DTIG<3@KRIZt~UnyQ!UgD?pt2AOApANGmZD%TvlhY9qL z0hy#_p(iOAoVEgWE%y!&lKCT0U@OqGY)#d-z|jN`aYS=U1Nm8l&d5c~p9egA9C`{F z+bv6%1Z*RfLTa3YFtf_<8V-gfRb;NNT6qlQ5mljg zH&uu5xWiZT96m?==qnbqJ0KQ3*`=~~qmB3P2Bk#B!6U-VR9nyv-gL_Xd8D-Uobq>! zx>q9!4aKqG*`{H5zQClOpQ$>{AIFK2^q9XnIpyAt)tRz{0Hwsj{gq(aF9iR8NaK4X zkp~_)svDc%*Y3N2ULlm?qJ+BTkH^_;c=gxFzn(vD!xwWU1)*BGJ`4X|Qs3|X|AHq< z;Y~HsD|f6Y-7lJW>hofrL|LJ^eGi_ZeG6~{hziivTCQieTuWzUjWB3u6ADuU15^%? zyH%E<5;#>{dbpLKkhX0){ul%_s@V^x0ABk(hVVoeH zx-NM;`TS}RHmE=o4z3RGfR%y=b(F}}Sl*6%VS{FuVPJo~9-{=jWVO9mV3pWcay$)z zO9n$#;Pqp=Fr_HHv*3%^I4n9w2L>Jq+@a+Q$o|hk&9>T~ zlS2WzVNR11q%#7`Kq*x=((z1DtVyvX3}g(x11dDogPa!1*v4!_DmpoPla|%yuMpl!&{Wr)^x41Rimbqxp)Ozgh-1(nSLf zs{pASbYT_PUMDC?pW-`5+l2 zw`{Q2=_&aLlKit7IH1D{w>AbDlO(ZCHAXNxU$0A{oAV!rm{mqs&w=6IiZC2@{rn*) zX)f@t6O{B7>;`m6r}Xp23QF zlxlDZ_86|p<6AL}V7XyQqNf}l)lvnOTe;DyD&DQ76*GdA1W|^o3ix(RJJJy&dW1deWHiSF>7x#llEf>O8G7_2EgFMs1=_#D_Ctw>(tUg_@@ zbzz*`H}ROd4QSHNO3^ZjfzLg`YCMsFF_i2WUHyhlLmTK6r%2;D8N4!e?g-4s3=4~t zgJCb}lEKKD9n}HwXrL}RE7)E1tmLaK;P>s zREtb%uH0Y65|Q4Ld;Y(hYn zg2^S~QHwO#rkD^Ih>i&+i-T>fftGQ)(F=(LHYRpHJ^4cHdUAW{MXGSVC21myU`Y4>NQqUPq_>*(nSJfG^~Rd zp#gQHRH*-E7sf4AxUABMWtWS!8A^&dLEAt@ip?t!LMq#K59Lgmth-hBQt^<=FTJ2q z?y+L{rny?AF_?tFt#gSk-nmcdk_EMtNtc9YN5{lx1tQb*-T~ZRT5^>Yhi`ed32T=! z`h&`K!W4kS-F6}ygz`3kZQC^ujN6AM5l}7QsZu%Wc~a|*pguGT9Owqau zB6OHR!901an+{|gM3t@8G#gvZ;%{_F1do>L(rh&T^;M>39rfwWEi)imvKSCBOCTs( zCr5pcYqZA}LhXwgz}i8ThC^hK*Y|Dfa?1zd(|sWMQzh&}`Qvbq`l&otRta*fKFYXJ zHCJni=BvFG`?fNdCvNx1$AM)c+!=uw_^KLIoWcy4uC&qU&20VXF!hu@NbY867H~~Z z0{co_N<>{S&-rfiVJmeAFz}MD#+N!uZPx{x@MIJlEft1eP!^I7%#B*Yip$? z+@>8~$kZVJoPmYCm4{&&b17kT8-}C2r2t4uEx<&z&QRb90r_vg%>o!%0B)} zIDmYSHc-4h)C`_$in~t*h0`dgl1#8~d4tRm#3d1&TDp+ag18E9_{p7vsVt)mkX__Z z>_(?!n`PD@;T+SZi-5?K^xAR*7c06raatHBq60Gm+8FvO;M*|mV6UOC621qs#Gpi-)M#msx1XRcMMF8Er3SU8?a+g3&TV0b|`ym6uAwtjOdB?^lM2(dLeoeJb{+0 zNCt#TJi)sKL>ePh5(xe+VMs{?E}r1ql7MtY;1UR%!Bl6B!b5CQ)QV5pRO~&bo&>_Y zWU%V0(BEcNHJC=FQ`De_^b_`c|Bn3`X#Tc{T9?D7+@^suP!Qs-LhP4H#EojmWmCkA zz&Q8`7h2|#l7hJVgmW$9NLN8zBEh9)?aPM|-=NJ;P<5XJUALsvM+Z0Yg@zFK_N{@i zrY$7_bTKMX!N0?lf>TB%YWPY_2*_#VtBkM5q=QLDzN+|YOdM!qjz!ZYLM!tXs zS-xP6mSmHy_5K`NIuUMTtkhLCI9=Oc|txqjrb-k-L2PmDbu5Bc)&0AD#wuf-3q5LjxTurMW&a4cjmvRv=k3Y{* z-I%MY-Jh%qEU#CkCzs9PLNX&uLPAGELgIZv(!bJ}<DN5pd!j_IuIUkFu^sZo={YR6P+5AlOPS@Wq z;Cb%Q#LhJ_YRMYFaPb5A-owf9;e%W)VS`#>63~gwz7?j(x^s5*1zB?p=jjtk1R_-A zRc#pG?%iD@XeWp^$&A$C>50M-4r#Z4bjkJXB)c1*0%;FXS_ ztra`4hH8>K>1a1^oGEtrN&cf0`aK?E7(v}jH~a$#-H(rI4XH^T-@CYR)oaH+KJ_Yx z9d_4vnL97>J#24Wql3Pw$ZKPdUN4qQvSB)tgLhhB`BYbHaKnCqThUhHwa$qUUUjFb z~fgkiwM3&Ws}t*dHbND9n(Yf zO~jzU6?2o(WwA*I*8}r{(XvM>k4t~%iB+VfzT||J1iTz6assnI`R%`RfpvGEUd{R< zdYm+8nZg3r{(^W~dDOP)^hFP4L`_D0dG{-c(12cR08JoSgSFH-ngLy^qZN<% zlA@OdhHRC9DS^kIZrsA^M-FJEREV_aaAlDBDW>Oo3c_~oWLeqVnLxQd$l-*z5PD$* zIdCwSbk)(hK3DLydD%0AyBE{r>b3cc?RM^pJgI5PeV!nhCOTOboq+9F_A3alHJ{~2 z$t}!^>^Q|1A`1(a{y3v-$uAEpRa~iOH7D8W(&F{$0+7@!aXNFN%)Qt5-98DANZ2C} ztJUa30vJuOxU@FPn#>!IH;|IoX_H(81Qv_AJ-pk5n;b~*G zU0WU#YOQ-n{=(fc*vayUQ|q$}oph=+TsK$mdx|O@YW05e6xL~3aN~V(AKo%ph2(R0 ze1rK+`z%%(aM;M?6K!2dzcXHz=;@jIjy5!EaxgIiCSe$DFLt&&fo3^`qmscUc{eig zmE@~%`&9CU^XXN2R|5LP!hCamdfht8O)RZgt>f!1pHy#VgCnygK8!|f2%U_zdw%70r@6uXw6=nsj6ghN@Eh$`)g?v06hd@R2(|5*#NKK43k z)>T@P>)s?pC707tUUqjSHA^$nvPq0eGd>@;V#4d=sNMQMM;$vu<77voGgwq|D28{f z$TVr1rHVce$fdLXcun;J!eD~+hJf0vhrEMuol9P|YV|;<_}P?_?xBRvb;-48j_`r5 z9!gcl&e%GS0@VOj&y((`4aCV$7fE_S)ddz*s1U-ger3U8am0GR{>R`O)&n_G>!T z-V=QK?yAHW2%nOZRDSh9BtDj%(!RfesTwxtb{8+wivCEWAKWE#^@y~Q(27Y`y)k6; zL?S845d$!TbO&{oqKtwhoP^|5oH!SZ1L$(utFa>>=RLqW>Guq;V`d3s8Zf6xCEH^* z*5%Nidvy32ho9cdr5QG#!P;~2gaWNO`Ng~df8{HK>mSbM!6IIFIL(a_#F$QbSO}G# z6AXI_%&9Wzwd^rfqHXw0zhA)>=ijW(UzxWj0f{^oV0iSc!G30AYw}nXgOS_(s8zu1 zRt)8dQ`G9Z={b$>dLQbFB;4#KH)#0W5TZ?%i6R?am&)J!_$1vqqcgUuOS&fxzV#i{ z)z8xP%_WY6y-n_%x9Rz4L!g`ttLsj1unkFU_LgFM&!_v2)#-Wct52sMKFs2ih!GEe zIyPJ$Cz{J%o0c{9&NXH9csAZNvy4Ai01(UIJV5GMIdVxX_u|8Ht;Zo^jE5Da3znRE z^dwIR&%}6r9+en#N{TaQ;tBe|h}@rVAQ|a@{OC-}+TKbfRODj`ef99XPbY5))XgzFUxPUry zI%ZRoVbx1u$wPc{H8ddp47OUx^6jI+MGQUL@)5JVyHUXk^t)Xji1Y@8$U57Q%^1sv z2CUw6rM>x1l#}s1lKT;=qN;E3$zZLA8=L5ntQBc;4!0@!5AcIDE@?++XHGBY@UnP+ zr17Ws-0dy5eD0;%<7i2Tam4lyq2ffvV2p*uJg{{*`OGEx`{xTw_+bbbU{JN6_4+h9 zQL8>64wImzW$AWHPK4^PVDI(MJ$o)jMQN9=j2o3^ePFoO8|~2>;z3{EC|9E2Tj}Fy z6f}A>g)BVR^qyG|=SVwVSl_>2ckcCGp{6~`ijol#?j|yJ9NkKmS7~YdnUOUzCM;(; zG#mCW+SA3anRwn6lE`XReg)VTzLaIj@h6w(bGRi-CgIaxME>Zqv9=#(m&!AghZ!Xr zu0_7raOUnEq0KppOPxfYCSlTab34o0!)rxa1-q2;yj;u1ZX30R$Gfrc4W}>TrxsH) z<3(Cs1W00vcNxm}SC-7B1=E%B%bD+6h#w4U$v*DJHT9|AfZV-6oaOaty{=_XieYj8 zz&Eq5jRO@3{!z`5YtJV5QISi7uWd zKjMsgBmxWi?k8z+Qlc<(xENzxs3=T;{pU#!@_?`ZGFjqYi^90rzxe<(5AOQo#qIwy zIpWC0VCwK4+;NA*V8*2MJg~SDUYL;B5d#=p99m34LIo}4A=wrHjD+L?WG75NY{AMG XHz@{FftLuxiHXB_DMEyxWhDOx?J`Th