diff --git a/client/package-lock.json b/client/package-lock.json index 05e0e2352..511bbe3b2 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -115,19 +115,19 @@ } }, "@angular-devkit/schematics": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-7.0.0-rc.3.tgz", - "integrity": "sha512-Dm+USTvcvgMWl1lfslK9diPtFje1rDBX0bIVPDHaBampxDSHyaQsfAEZxQWInoVB9c9NzjmCEcZoCogwMDoeUg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-7.0.2.tgz", + "integrity": "sha512-b+ex7La9ZFxdh1JyuTvjhPKHsyCcXpGG2MQ43QQm0xbR1IigzVv5N2eyvm02rvQK+rY36+rG+FvO+korUeoLhw==", "dev": true, "requires": { - "@angular-devkit/core": "7.0.0-rc.3", + "@angular-devkit/core": "7.0.2", "rxjs": "6.3.3" }, "dependencies": { "@angular-devkit/core": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.0-rc.3.tgz", - "integrity": "sha512-xPhx4jCY1B4TLWWAEiUvpEJruIPlSxf8+cz9dFk/AkoDfJPOA21iEJ1Km6FPxkuKchm+W4n25ASDO45rOXhLaA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.2.tgz", + "integrity": "sha512-liVqobArUfTvf0cZcjr3VI5tnHR+QjzfvC4HFBwIArls6/RxIATqd9GE9mFMWpy17xgVq8N7WmD6bymv1trbfA==", "dev": true, "requires": { "ajv": "6.5.3", @@ -200,17 +200,17 @@ } }, "@angular/animations": { - "version": "7.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-7.0.0-rc.1.tgz", - "integrity": "sha512-VP3Lui1HyW7kQzdC/kfEw0NiH+VxA81EKMN1iLtDdNoOCpzTcnmjiiPUMtrGOhhhJJXH9y/eQMUOwUcSdKLPZg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-7.0.0.tgz", + "integrity": "sha512-IYdryQXdYfPvhJpExLSAr0o9rlUeyVS++a6h/sjqN1dkUt/yJBHLRreuHx8Udvlj2nH70raHJgevk8FwhAkTdA==", "requires": { "tslib": "^1.9.0" } }, "@angular/cdk": { - "version": "7.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-7.0.0-rc.1.tgz", - "integrity": "sha512-JI8j+vxRrBpqIkvUW9TvR9MdlxAodVV0FIreS7boZJaGQa6XuBYfmM9JRhKEZgTg/si8aArxQ4eYh5tdGsUjkA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-7.0.0.tgz", + "integrity": "sha512-HX+gIJzST/Nu07ASg1XR583KSEmHI6kUbiSBdq0LqF3mIQgId5z3auBqQcXAgvB0Cg29+/38aj31hnoK/LswEQ==", "requires": { "parse5": "^5.0.0", "tslib": "^1.7.1" @@ -225,16 +225,16 @@ } }, "@angular/cli": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-7.0.0-rc.3.tgz", - "integrity": "sha512-S1RNniDxpQIGzjyjIibI1OYPN6mEBC93DoKdTLlLLEBqhMfh5dT80Yx4KzZR14CPIiPEqc0vnRWtPt5eHkkrLA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-7.0.2.tgz", + "integrity": "sha512-z53fPkdwm+l4yii8+EwJqeYHgDtyTPywe9ZnpeUu4IvIoM5Mffeu+Rlen3sdwb4+7iL3qpLKtwdMosLJwin85w==", "dev": true, "requires": { - "@angular-devkit/architect": "0.9.0-rc.3", - "@angular-devkit/core": "7.0.0-rc.3", - "@angular-devkit/schematics": "7.0.0-rc.3", - "@schematics/angular": "7.0.0-rc.3", - "@schematics/update": "0.9.0-rc.3", + "@angular-devkit/architect": "0.10.2", + "@angular-devkit/core": "7.0.2", + "@angular-devkit/schematics": "7.0.2", + "@schematics/angular": "7.0.2", + "@schematics/update": "0.10.2", "inquirer": "6.2.0", "opn": "5.3.0", "rxjs": "6.3.3", @@ -243,19 +243,19 @@ }, "dependencies": { "@angular-devkit/architect": { - "version": "0.9.0-rc.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.9.0-rc.3.tgz", - "integrity": "sha512-9G21dLXbpaAx5pBUgmW3DI6ZjoyEl662EXwLvggxn8DG2Q3v9RBbGnakkKSXlvmlxtT5xiRmS8puFZHffDjaNg==", + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.10.2.tgz", + "integrity": "sha512-jMok3FvXpj1zfI7tPmrMYe9yyBP2qivaBGxJqKa0H5SdwJFdudD+KwQOwamBdqz68WfEfzwvS2YCqE67thak7g==", "dev": true, "requires": { - "@angular-devkit/core": "7.0.0-rc.3", + "@angular-devkit/core": "7.0.2", "rxjs": "6.3.3" } }, "@angular-devkit/core": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.0-rc.3.tgz", - "integrity": "sha512-xPhx4jCY1B4TLWWAEiUvpEJruIPlSxf8+cz9dFk/AkoDfJPOA21iEJ1Km6FPxkuKchm+W4n25ASDO45rOXhLaA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.2.tgz", + "integrity": "sha512-liVqobArUfTvf0cZcjr3VI5tnHR+QjzfvC4HFBwIArls6/RxIATqd9GE9mFMWpy17xgVq8N7WmD6bymv1trbfA==", "dev": true, "requires": { "ajv": "6.5.3", @@ -334,25 +334,25 @@ } }, "@angular/common": { - "version": "7.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-7.0.0-rc.1.tgz", - "integrity": "sha512-OXN0lIXDz1SWnuFH+vAM1o/8VoezPxyxk0s2t4TSr4AvwSMRAYL13+IeQcYcxyymuQry7XzFqXyjTVD2kNsoBA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-7.0.0.tgz", + "integrity": "sha512-jp6MA6EOq/a1m+F0c1aZC345pAYYYFpN1m7GMM91JlqkjzJMhyYVk+Bod9xQOEWadcpY+RFudG+jRsPCMO8bvQ==", "requires": { "tslib": "^1.9.0" } }, "@angular/compiler": { - "version": "7.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-7.0.0-rc.1.tgz", - "integrity": "sha512-oCqavxWdx9eDtzW45MTkrTrLSC57MH8/PfY0luwu1R5AaJ9wldifrUCS9ThtpUncSOgZCK9BpJMcywMWhIqvPQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-7.0.0.tgz", + "integrity": "sha512-4fkohfGyG1BEpeYenOartuJmduyZ/R3XQx46hDDiR/9A8/Go4qLGkgr9Bd/JL/gPIR1XAHH9D5ii2sh+28ZEmA==", "requires": { "tslib": "^1.9.0" } }, "@angular/compiler-cli": { - "version": "7.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-7.0.0-rc.1.tgz", - "integrity": "sha512-eue8bnD1uBYD7UZp1In8THnInoAwidKk5Ibv9aOloxYcx64FH6ca1ABKPdIZd3hNm0zJsR+ItDi2jyN0xK6+5A==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-7.0.0.tgz", + "integrity": "sha512-fj5ixB4X3BsUnUukFx+dK5z2KkO7lCx5vlbUT2GOMbGCG43dIH6JKUfy5HbpCodLsJHG0gRgZZuY7/k+pbzS+g==", "dev": true, "requires": { "canonical-path": "0.0.2", @@ -677,72 +677,63 @@ } }, "@angular/core": { - "version": "7.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-7.0.0-rc.1.tgz", - "integrity": "sha512-pY7Aul+GOHHoVxbVTv26rFGwl34PKLI31lyC9mH0Eg2Wqq8XIa6XrNePQo4rbU0oO1ZplULSohMk8vVPfpWGpw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-7.0.0.tgz", + "integrity": "sha512-DjVyWNGBWKEeBvxeXy8FGBNlnr/W/tNygOZEd6/uCktcXTG4DNyNQrWuNZUKEpr7RuIT3YVMj+UNwgTq0jB/9g==", "requires": { "tslib": "^1.9.0" } }, "@angular/forms": { - "version": "7.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-7.0.0-rc.1.tgz", - "integrity": "sha512-wEmRMG8vLAcJzvXiFWp9r1fhBH846AwvY6+75fpSz7n9vAgDJSlh/v/k+d+kG5hoIatzmnKWKVF+Zn8mlpd4Ig==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-7.0.0.tgz", + "integrity": "sha512-rTg1UHq9gHR6zY3Kkip1KCm/YTck/rlR8CvVFIMwF0bdQxUCT51SXVn58nXts9yDaieABcGaQHNkQn1mARslgw==", "requires": { "tslib": "^1.9.0" } }, "@angular/http": { - "version": "7.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@angular/http/-/http-7.0.0-rc.1.tgz", - "integrity": "sha512-B/nQbrs8QcyiqgtHt6nCVy3Rkz/5N7MZCDUpt7skSmqNsXLMe+VnkYUMtayYQdzrk9wu89rzvkQI9WmXxcnQzA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@angular/http/-/http-7.0.0.tgz", + "integrity": "sha512-gHMVKosbhXu+2sXccR1fnKpaJBtZioneW+jpG6CW3oo6f4L5FXnGGx/lqYLsgKFM8yHiOs6OXqvuHh8wYEjayA==", "requires": { "tslib": "^1.9.0" } }, "@angular/language-service": { - "version": "7.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-7.0.0-rc.1.tgz", - "integrity": "sha512-UU3OoNG4lixRKYPQ6bOlxBaKP521hjqvZjGSIMBJjhDOS4V0FwZ6wQfy73hHl522w+x/VX6lyRE3ugvtB555Hg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-7.0.0.tgz", + "integrity": "sha512-JlBAXvKrXCCdFc9AnQRaMDl9c0qmASagmmbEX+fuxJbcyqtsUF2y/15Hy5UUmmA+ldZ+mwAoX/naPZZrFSP2rw==", "dev": true }, "@angular/material": { - "version": "7.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-7.0.0-rc.1.tgz", - "integrity": "sha512-4LC3y5ZorNjdF1lEkVN/3zwOEnBwjfWLCY92tA06Kdvs1yENZdu0fGTRwcu9Hz4y+t84sL/KEKC9VjKN3Z7PSg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-7.0.0.tgz", + "integrity": "sha512-HgHzHWsUvNiSpRmoOJqnH/TVb4Ki7sXxbWuw5OVKOKiBW6Gwvd29+cP4XauzH47wHMyvS9/HH8kj3gC72pLhJQ==", "requires": { - "parse5": "^5.0.0", "tslib": "^1.7.1" - }, - "dependencies": { - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "optional": true - } } }, "@angular/platform-browser": { - "version": "7.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-7.0.0-rc.1.tgz", - "integrity": "sha512-P9W+Q9UZoZT+8pg5Id6shc7VXWdJ6YZQAdnxXpp9H2Be5DB6DD5aqsgxSgKNRW1EmQScJHq0EY28vUPGC5idhA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-7.0.0.tgz", + "integrity": "sha512-XyvL30d6meJ+SXlOmdR+sxoLdSvkQdmVNvpdvUzAHC/EqwA/byg4V3bTe5lpZmypclgFCjkGoTsz6uOnnwlQhw==", "requires": { "tslib": "^1.9.0" } }, "@angular/platform-browser-dynamic": { - "version": "7.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-7.0.0-rc.1.tgz", - "integrity": "sha512-LDULj9gdNxlzYjkHcxofSFwhchUT405Hh+8pCMcHxZEa1dtEzXGB8VYEMPc4EipZt3hleMzv6sjP9gL+4zXpeA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-7.0.0.tgz", + "integrity": "sha512-lH2KuH+Em1y/mTOE6yTJmsOxYkMbYKzKLP9gYzc9vZu3er1df6Jx6jxefeBmAr9v+kNCLnpnHWHz2y4GzAesJA==", "requires": { "tslib": "^1.9.0" } }, "@angular/router": { - "version": "7.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-7.0.0-rc.1.tgz", - "integrity": "sha512-y3hbUhyRIOkHym86CqVkKhCldaXreA13BH1D/dprEfIxgAHBKA/oNZrbGGc20n2+aI+AhSUJjAqnruKwr0dgWw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-7.0.0.tgz", + "integrity": "sha512-BK6Ho/7ckldFKc724piuPuMX0HPYXD8SUfwNj6yc0wgzDxdWzSmZj/xPEYll2pGNIA9x8Tg1NQKCD+kp1WXngw==", "requires": { "tslib": "^1.9.0" } @@ -974,7 +965,7 @@ }, "load-json-file": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { @@ -1233,7 +1224,7 @@ }, "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, @@ -1362,9 +1353,9 @@ } }, "@ngx-pwa/local-storage": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@ngx-pwa/local-storage/-/local-storage-6.1.1.tgz", - "integrity": "sha512-6SoKzNWZjWSEMZZS1jygRuDe7UoNYc6rOC5efnGuyqsQwm5LCuMCUqOEJ1xZl65ZFXOh6PREobMY6zSdTZa04g==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@ngx-pwa/local-storage/-/local-storage-6.2.0.tgz", + "integrity": "sha512-6S0Q/JgL0MqyyVh3rcVglet8rcwrJKF3v4iNZLyMQamJbtDlianHZdlQY5+84rwPt6ScIKz3hU8Jc+wDX2oZGQ==", "requires": { "tslib": "^1.9.0" } @@ -1392,20 +1383,20 @@ "dev": true }, "@schematics/angular": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-7.0.0-rc.3.tgz", - "integrity": "sha512-0sTXtlFlOF4wGgn3NG7DYmOf65wFVG+aZRvYmgqYIvXhqZlx7G0xN9b3+9CmC9+nE2XaD9TAMfN0PEzgFJEE6A==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-7.0.2.tgz", + "integrity": "sha512-EMYo3CguVFqpVkXPlyXdyMaPA3LIDDfHtrjc4kAkb+yLorTsKETTWoVFwOzG7xoF3uIG+inkeKr/MzU0OejrUw==", "dev": true, "requires": { - "@angular-devkit/core": "7.0.0-rc.3", - "@angular-devkit/schematics": "7.0.0-rc.3", - "typescript": "3.1.1" + "@angular-devkit/core": "7.0.2", + "@angular-devkit/schematics": "7.0.2", + "typescript": "3.1.3" }, "dependencies": { "@angular-devkit/core": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.0-rc.3.tgz", - "integrity": "sha512-xPhx4jCY1B4TLWWAEiUvpEJruIPlSxf8+cz9dFk/AkoDfJPOA21iEJ1Km6FPxkuKchm+W4n25ASDO45rOXhLaA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.2.tgz", + "integrity": "sha512-liVqobArUfTvf0cZcjr3VI5tnHR+QjzfvC4HFBwIArls6/RxIATqd9GE9mFMWpy17xgVq8N7WmD6bymv1trbfA==", "dev": true, "requires": { "ajv": "6.5.3", @@ -1466,12 +1457,6 @@ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true }, - "typescript": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.1.tgz", - "integrity": "sha512-Veu0w4dTc/9wlWNf2jeRInNodKlcdLgemvPsrNpfu5Pq39sgfFjvIIgTsvUHCoLBnMhPoUA+tFxsXjU6VexVRQ==", - "dev": true - }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -1484,13 +1469,13 @@ } }, "@schematics/update": { - "version": "0.9.0-rc.3", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.9.0-rc.3.tgz", - "integrity": "sha512-SNww4o97T1Mp9YJZt6sUhNG3s5jqj5Ru+6lpfCSN4dxTjzhIFyGPX60OLMEZvISPnBwXU/hbo9mBEjU6QazpPg==", + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.10.2.tgz", + "integrity": "sha512-/U/HlA/1DRmN2rj/P5htxEWDiMyJE/pa/gGbG2z0IBabOaGsMfEDHPqqXphpB2+03lc2tmC+B19j6pHKtgXZUg==", "dev": true, "requires": { - "@angular-devkit/core": "7.0.0-rc.3", - "@angular-devkit/schematics": "7.0.0-rc.3", + "@angular-devkit/core": "7.0.2", + "@angular-devkit/schematics": "7.0.2", "npm-registry-client": "8.6.0", "rxjs": "6.3.3", "semver": "5.5.1", @@ -1498,9 +1483,9 @@ }, "dependencies": { "@angular-devkit/core": { - "version": "7.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.0-rc.3.tgz", - "integrity": "sha512-xPhx4jCY1B4TLWWAEiUvpEJruIPlSxf8+cz9dFk/AkoDfJPOA21iEJ1Km6FPxkuKchm+W4n25ASDO45rOXhLaA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.0.2.tgz", + "integrity": "sha512-liVqobArUfTvf0cZcjr3VI5tnHR+QjzfvC4HFBwIArls6/RxIATqd9GE9mFMWpy17xgVq8N7WmD6bymv1trbfA==", "dev": true, "requires": { "ajv": "6.5.3", @@ -1595,13 +1580,13 @@ }, "@types/node": { "version": "8.9.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.9.5.tgz", + "resolved": "http://registry.npmjs.org/@types/node/-/node-8.9.5.tgz", "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==", "dev": true }, "@types/q": { "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "resolved": "http://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", "dev": true }, @@ -1908,7 +1893,7 @@ }, "ajv": { "version": "6.4.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", + "resolved": "http://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", "dev": true, "requires": { @@ -1954,7 +1939,7 @@ }, "ambi": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/ambi/-/ambi-2.5.0.tgz", + "resolved": "http://registry.npmjs.org/ambi/-/ambi-2.5.0.tgz", "integrity": "sha1-fI43K+SIkRV+fOoBy2+RQ9H3QiA=", "dev": true, "requires": { @@ -2242,7 +2227,7 @@ }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, @@ -2322,7 +2307,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -2601,7 +2586,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true } @@ -2721,7 +2706,7 @@ }, "browserify-aes": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { @@ -2758,7 +2743,7 @@ }, "browserify-rsa": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { @@ -2811,7 +2796,7 @@ }, "buffer": { "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { @@ -3256,7 +3241,7 @@ }, "codelyzer": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-4.2.1.tgz", + "resolved": "http://registry.npmjs.org/codelyzer/-/codelyzer-4.2.1.tgz", "integrity": "sha512-CKwfgpfkqi9dyzy4s6ELaxJ54QgJ6A8iTSsM4bzHbLuTpbKncvNc3DUlCvpnkHBhK47gEf4qFsWoYqLrJPhy6g==", "dev": true, "requires": { @@ -3614,7 +3599,7 @@ }, "create-hash": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { @@ -3627,7 +3612,7 @@ }, "create-hmac": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { @@ -4029,7 +4014,7 @@ }, "diffie-hellman": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { @@ -4159,7 +4144,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, @@ -4540,7 +4525,7 @@ }, "events": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz", "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", "dev": true }, @@ -5019,7 +5004,7 @@ }, "file-loader": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", + "resolved": "http://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", "dev": true, "requires": { @@ -5068,7 +5053,7 @@ }, "finalhandler": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "dev": true, "requires": { @@ -5322,15 +5307,13 @@ "version": "1.0.0", "resolved": false, "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "resolved": false, "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5353,8 +5336,7 @@ "version": "0.0.1", "resolved": false, "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", @@ -5521,7 +5503,6 @@ "resolved": false, "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -5530,8 +5511,7 @@ "version": "0.0.8", "resolved": false, "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.2.4", @@ -5646,8 +5626,7 @@ "version": "1.0.1", "resolved": false, "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -5935,7 +5914,7 @@ }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, @@ -6329,7 +6308,7 @@ }, "html-webpack-plugin": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "resolved": "http://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", "dev": true, "requires": { @@ -6385,7 +6364,7 @@ }, "readable-stream": { "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { @@ -6430,7 +6409,7 @@ }, "http-errors": { "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "dev": true, "requires": { @@ -6459,7 +6438,7 @@ }, "http-proxy-middleware": { "version": "0.18.0", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "resolved": "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", "dev": true, "requires": { @@ -6881,7 +6860,7 @@ }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { @@ -7559,7 +7538,7 @@ }, "json5": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, @@ -7611,7 +7590,7 @@ }, "es6-promise": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", + "resolved": "http://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=", "dev": true }, @@ -7623,7 +7602,7 @@ }, "readable-stream": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", "dev": true, "requires": { @@ -8019,7 +7998,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { @@ -8332,7 +8311,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true, "optional": true @@ -8462,7 +8441,7 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, @@ -8525,7 +8504,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { @@ -8707,7 +8686,7 @@ "dependencies": { "semver": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz", "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "dev": true, "optional": true @@ -8790,7 +8769,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "optional": true, @@ -9216,7 +9195,7 @@ }, "os-locale": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "optional": true, @@ -9326,7 +9305,7 @@ }, "parse-asn1": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", "dev": true, "requires": { @@ -9480,7 +9459,7 @@ }, "pause-stream": { "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "dev": true, "requires": { @@ -9782,7 +9761,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -9795,7 +9774,7 @@ }, "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, @@ -10116,7 +10095,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -10587,7 +10566,7 @@ }, "sax": { "version": "0.5.8", - "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "resolved": "http://registry.npmjs.org/sax/-/sax-0.5.8.tgz", "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", "dev": true }, @@ -10849,7 +10828,7 @@ }, "sha.js": { "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { @@ -11543,7 +11522,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -11707,7 +11686,7 @@ }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -11898,7 +11877,7 @@ }, "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true } @@ -13071,7 +13050,7 @@ }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { @@ -13116,7 +13095,7 @@ }, "xmlbuilder": { "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", "dev": true }, diff --git a/client/package.json b/client/package.json index 868c1348d..906b8859c 100644 --- a/client/package.json +++ b/client/package.json @@ -15,18 +15,18 @@ }, "private": true, "dependencies": { - "@angular/animations": "^7.0.0-rc.1", - "@angular/cdk": "~7.0.0-rc.1", - "@angular/common": "^7.0.0-rc.1", - "@angular/compiler": "^7.0.0-rc.1", - "@angular/core": "^7.0.0-rc.1", - "@angular/forms": "^7.0.0-rc.1", - "@angular/http": "^7.0.0-rc.1", - "@angular/material": "^7.0.0-rc.1", - "@angular/platform-browser": "^7.0.0-rc.1", - "@angular/platform-browser-dynamic": "^7.0.0-rc.1", - "@angular/router": "^7.0.0-rc.1", - "@ngx-pwa/local-storage": "^6.1.1", + "@angular/animations": "^7.0.0", + "@angular/cdk": "^7.0.0", + "@angular/common": "^7.0.0", + "@angular/compiler": "^7.0.0", + "@angular/core": "^7.0.0", + "@angular/forms": "^7.0.0", + "@angular/http": "^7.0.0", + "@angular/material": "^7.0.0", + "@angular/platform-browser": "^7.0.0", + "@angular/platform-browser-dynamic": "^7.0.0", + "@angular/router": "^7.0.0", + "@ngx-pwa/local-storage": "^6.2.0", "@ngx-translate/core": "^10.0.2", "@ngx-translate/http-loader": "^3.0.1", "core-js": "^2.5.4", @@ -39,9 +39,9 @@ }, "devDependencies": { "@angular-devkit/build-angular": "^0.7.0", - "@angular/cli": "^7.0.0-rc.3", - "@angular/compiler-cli": "^7.0.0-rc.1", - "@angular/language-service": "^7.0.0-rc.1", + "@angular/cli": "^7.0.2", + "@angular/compiler-cli": "^7.0.0", + "@angular/language-service": "^7.0.0", "@biesbjerg/ngx-translate-extract": "^2.3.4", "@compodoc/compodoc": "^1.1.5", "@types/jasmine": "^2.8.9", diff --git a/client/src/app/core/services/data-send.service.ts b/client/src/app/core/services/data-send.service.ts index 3747f636e..bc5f15593 100644 --- a/client/src/app/core/services/data-send.service.ts +++ b/client/src/app/core/services/data-send.service.ts @@ -25,7 +25,8 @@ export class DataSendService { * Usually for new Models */ public createModel(model: BaseModel): Observable { - return this.httpService.create('rest/' + model.collectionString + '/', model) as Observable; + const restPath = `rest/${model.collectionString}/`; + return this.httpService.create(restPath, model) as Observable; } /** @@ -36,7 +37,7 @@ export class DataSendService { */ public updateModel(model: BaseModel, method: HTTPMethod): Observable { const restPath = `rest/${model.collectionString}/${model.id}`; - return this.httpService.update(restPath + '/' + model.id, model, method) as Observable; + return this.httpService.update(restPath, model, method) as Observable; } /** @@ -44,10 +45,9 @@ export class DataSendService { * * @param model the BaseModel that shall be removed * @return Observable of BaseModel - * - * TODO Not tested */ public deleteModel(model: BaseModel): Observable { - return this.httpService.delete(model.collectionString + '/' + model.id) as Observable; + const restPath = `rest/${model.collectionString}/${model.id}`; + return this.httpService.delete(restPath) as Observable; } } diff --git a/client/src/app/shared/components/sorting-list/sorting-list.component.html b/client/src/app/shared/components/sorting-list/sorting-list.component.html index 3371e9eba..f7522b16e 100644 --- a/client/src/app/shared/components/sorting-list/sorting-list.component.html +++ b/client/src/app/shared/components/sorting-list/sorting-list.component.html @@ -1,4 +1,4 @@ - +
drag_handle @@ -7,4 +7,4 @@ {{item}}
- +
diff --git a/client/src/app/site/motions/components/category-list/category-list.component.html b/client/src/app/site/motions/components/category-list/category-list.component.html index 4f573098d..6249e0018 100644 --- a/client/src/app/site/motions/components/category-list/category-list.component.html +++ b/client/src/app/site/motions/components/category-list/category-list.component.html @@ -13,80 +13,115 @@ +
+ + + + Create new category + +
+

+ + + + + Required + + + + + + + + Required + + +

+
+
+ + + + + + +
-
- -
- + + +
-
- {{category.prefix}} +
+ {{ category.prefix }}
-
- {{this.formGroup.get('prefix').value}} +
+ {{ this.updateForm.get('prefix').value }}
-
- {{category.name}} +
+ {{ category.name }}
-
- {{this.formGroup.get('name').value}} +
+ {{ this.updateForm.get('name').value }}
- {{motionsInCategory(category).length}} + {{ motionsInCategory(category).length }}
-
+ + + Edit category details:
- + Required - + - + Required - +
- Motions: -
-
    -
  • {{motion}}
  • -
-
-
- + + +
+ Motions: +
+
    +
  • {{motion}}
  • +
+
+
+ +
+ + - - - - + diff --git a/client/src/app/site/motions/components/category-list/category-list.component.scss b/client/src/app/site/motions/components/category-list/category-list.component.scss index b9c520e0a..57a45ddf3 100644 --- a/client/src/app/site/motions/components/category-list/category-list.component.scss +++ b/client/src/app/site/motions/components/category-list/category-list.component.scss @@ -1,8 +1,3 @@ -.new { - // put in theme later - background-color: lightblue; -} - .custom-table-header { // display: none; width: 100%; diff --git a/client/src/app/site/motions/components/category-list/category-list.component.ts b/client/src/app/site/motions/components/category-list/category-list.component.ts index cf2c54544..6d86e4dda 100644 --- a/client/src/app/site/motions/components/category-list/category-list.component.ts +++ b/client/src/app/site/motions/components/category-list/category-list.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, OnDestroy, ViewChild } from '@angular/core'; +import { Component, OnInit, ViewChild } from '@angular/core'; import { Title } from '@angular/platform-browser'; import { TranslateService } from '@ngx-translate/core'; @@ -12,6 +12,7 @@ import { Motion } from '../../../../shared/models/motions/motion'; import { SortingListComponent } from '../../../../shared/components/sorting-list/sorting-list.component'; import { MotionRepositoryService } from '../../services/motion-repository.service'; import { ViewMotion } from '../../models/view-motion'; +import { PromptService } from 'app/core/services/prompt.service'; /** * List view for the categories. @@ -21,21 +22,31 @@ import { ViewMotion } from '../../models/view-motion'; templateUrl: './category-list.component.html', styleUrls: ['./category-list.component.scss'] }) -export class CategoryListComponent extends BaseComponent implements OnInit, OnDestroy { +export class CategoryListComponent extends BaseComponent implements OnInit { /** - * States the edit mode + * Hold the category to create */ - public editMode = false; + public categoryToCreate: Category | null; /** - * Source of the Data + * Determine which category to edit */ - public dataSource: Array; + public editId: number | null; /** - * The current focussed formgroup + * Source of the data */ - public formGroup: FormGroup; + public categories: Array; + + /** + * For new categories + */ + public createForm: FormGroup; + + /** + * The current focussed form + */ + public updateForm: FormGroup; /** * The MultiSelect Component @@ -55,55 +66,36 @@ export class CategoryListComponent extends BaseComponent implements OnInit, OnDe protected translate: TranslateService, private repo: CategoryRepositoryService, private formBuilder: FormBuilder, - private motionRepo: MotionRepositoryService + private motionRepo: MotionRepositoryService, + private promptService: PromptService ) { super(titleService, translate); - this.formGroup = this.formBuilder.group({ - name: ['', Validators.required], - prefix: ['', Validators.required] - }); - } - /** - * On Destroy Function - * - * Saves the edits - */ - public ngOnDestroy(): void { - this.dataSource.forEach(viewCategory => { - if (viewCategory.edit && viewCategory.opened) { - const nameControl = this.formGroup.get('name'); - const prefixControl = this.formGroup.get('prefix'); - const nameValue = nameControl.value; - const prefixValue = prefixControl.value; - viewCategory.name = nameValue; - viewCategory.prefix = prefixValue; - this.saveCategory(viewCategory); - } + this.createForm = this.formBuilder.group({ + prefix: ['', Validators.required], + name: ['', Validators.required] + }); + + this.updateForm = this.formBuilder.group({ + prefix: ['', Validators.required], + name: ['', Validators.required] }); } /** * Event on Key Down in form */ - public keyDownFunction(event: KeyboardEvent, viewCategory: ViewCategory): void { + public keyDownFunction(event: KeyboardEvent, viewCategory?: ViewCategory): void { if (event.keyCode === 13) { - this.onSaveButton(viewCategory); + console.log('hit enter'); + if (viewCategory) { + this.onSaveButton(viewCategory); + } else { + this.onCreateButton(); + } } } - /** - * Stores the Datamodel in the repo - * @param viewCategory - */ - private saveCategory(viewCategory: ViewCategory): void { - if (this.repo.osInDataStore(viewCategory)) { - this.repo.update(viewCategory.category).subscribe(); - } else { - this.repo.create(viewCategory.category, viewCategory).subscribe(); - } - viewCategory.edit = false; - } /** * Init function. * @@ -112,147 +104,104 @@ export class CategoryListComponent extends BaseComponent implements OnInit, OnDe public ngOnInit(): void { super.setTitle('Category'); this.repo.getViewModelListObservable().subscribe(newViewCategories => { - this.dataSource = newViewCategories; + this.categories = newViewCategories; + this.sortDataSource(); }); - this.sortDataSource(); } /** * Add a new Category. */ public onPlusButton(): void { - let noNewOnes = true; - this.dataSource.forEach(viewCategory => { - if (viewCategory.id === undefined) { - noNewOnes = false; - } - }); - if (noNewOnes) { - const newCategory = new Category(); - newCategory.id = undefined; - newCategory.name = this.translate.instant('Name'); - newCategory.prefix = this.translate.instant('Prefix'); - const newViewCategory = new ViewCategory(newCategory); - newViewCategory.opened = true; - this.dataSource.reverse(); - this.dataSource.push(newViewCategory); - this.dataSource.reverse(); - this.editMode = true; + if (!this.categoryToCreate) { + this.categoryToCreate = new Category(); + this.createForm.reset(); } } /** - * Executed on edit button - * @param viewCategory + * Creates a new category. Executed after hitting save. + */ + public onCreateButton(): void { + if (this.createForm.valid) { + this.categoryToCreate.patchValues(this.createForm.value as Category); + this.repo.create(this.categoryToCreate).subscribe(resp => { + this.categoryToCreate = null; + }); + } + } + + /** + * Category specific edit button + * @param viewCategory individual cat */ public onEditButton(viewCategory: ViewCategory): void { - viewCategory.edit = true; - viewCategory.synced = false; - this.editMode = true; - const nameControl = this.formGroup.get('name'); - const prefixControl = this.formGroup.get('prefix'); - nameControl.setValue(viewCategory.name); - prefixControl.setValue(viewCategory.prefix); + this.editId = viewCategory.id; + this.updateForm.reset(); + this.updateForm.patchValue({ + prefix: viewCategory.prefix, + name: viewCategory.name + }); } /** * Saves the categories */ public onSaveButton(viewCategory: ViewCategory): void { - if (this.formGroup.controls.name.valid && this.formGroup.controls.prefix.valid) { - this.editMode = false; - viewCategory.edit = false; - const nameControl = this.formGroup.get('name'); - const prefixControl = this.formGroup.get('prefix'); - const nameValue = nameControl.value; - const prefixValue = prefixControl.value; - if ( - viewCategory.id === undefined || - nameValue !== viewCategory.name || - prefixValue !== viewCategory.prefix - ) { - viewCategory.prefix = prefixValue; - viewCategory.name = nameValue; - this.saveCategory(viewCategory); - } + if (this.updateForm.valid) { + this.repo.update(this.updateForm.value as Partial, viewCategory).subscribe(resp => { + this.onCancelButton(); + this.sortDataSource(); + }); + } + + // get the sorted motions + if (this.sortSelector) { + const manuallySortedMotions = this.sortSelector.array as Motion[]; + this.repo.updateCategoryNumbering(viewCategory.category, manuallySortedMotions).subscribe(); } - const motionList = this.sortSelector.array as Motion[]; - this.repo.updateCategoryNumbering(viewCategory.category, motionList).subscribe(); - this.sortDataSource(); } /** - * sorts the datasource by prefix alphabetically + * sorts the categories by prefix */ protected sortDataSource(): void { - this.dataSource.sort((viewCategory1, viewCategory2) => { - if (viewCategory1.prefix > viewCategory2.prefix) { - return 1; - } - if (viewCategory1.prefix < viewCategory2.prefix) { - return -1; - } - }); + this.categories.sort((viewCategory1, viewCategory2) => (viewCategory1 > viewCategory2 ? 1 : -1)); } /** * executed on cancel button * @param viewCategory */ - public onCancelButton(viewCategory: ViewCategory): void { - viewCategory.edit = false; - this.editMode = false; + public onCancelButton(): void { + this.editId = null; } /** * is executed, when the delete button is pressed */ - public onDeleteButton(viewCategory: ViewCategory): void { - if (this.repo.osInDataStore(viewCategory) && viewCategory.id !== undefined) { + public async onDeleteButton(viewCategory: ViewCategory): Promise { + const content = this.translate.instant('Delete') + ` ${viewCategory.name}?`; + if (await this.promptService.open('Are you sure?', content)) { const motList = this.motionsInCategory(viewCategory.category); motList.forEach(motion => { motion.category_id = null; this.motionRepo.update(motion, new ViewMotion(motion)); }); - this.repo.delete(viewCategory).subscribe(); - } - const index = this.dataSource.indexOf(viewCategory, 0); - if (index > -1) { - this.dataSource.splice(index, 1); - } - // if no category is there, we still have to be able to create one - if (this.dataSource.length < 1) { - this.editMode = false; + + this.repo.delete(viewCategory).subscribe(resp => { + this.onCancelButton(); + }); } } /** - * Is executed when a mat-extension-panel is opened or closed - * @param open true if opened, false if being closed - * @param category the category in the panel + * Returns the motions corresponding to a category + * @param category target */ - public panelOpening(open: boolean, category: ViewCategory): void { - category.opened = open as boolean; - if (category.edit === true) { - this.onSaveButton(category); - this.onCancelButton(category); - } - if (!open) { - category.edit = false; - this.editMode = false; - } - } - public motionsInCategory(category: Category): Array { const motList = this.repo.getMotionsOfCategory(category); - motList.sort((motion1, motion2) => { - if (motion1 > motion2) { - return 1; - } - if (motion1 < motion2) { - return -1; - } - }); + motList.sort((motion1, motion2) => (motion1 > motion2 ? 1 : -1)); return motList; } } diff --git a/client/src/app/site/motions/components/motion-detail/motion-detail.component.ts b/client/src/app/site/motions/components/motion-detail/motion-detail.component.ts index e6c337d59..a8c4c0e5c 100644 --- a/client/src/app/site/motions/components/motion-detail/motion-detail.component.ts +++ b/client/src/app/site/motions/components/motion-detail/motion-detail.component.ts @@ -285,15 +285,18 @@ export class MotionDetailComponent extends BaseComponent implements OnInit { } }); - const motList = this.categoryRepo.getMotionsOfCategory( - this.categoryRepo.getCategoryByID(fromForm.category_id) - ); - if (!motList.includes(fromForm)) { - motList.push(fromForm); - this.categoryRepo.updateCategoryNumbering( - this.categoryRepo.getCategoryByID(fromForm.category_id), - motList - ); + // TODO: Document and evaluate if this actually does what it is supposed to do + if (fromForm.category_id) { + const catOfFormMotion = this.categoryRepo.getCategoryByID(fromForm.category_id); + const motionsWithSameCat = this.categoryRepo.getMotionsOfCategory(catOfFormMotion); + + if (!motionsWithSameCat.includes(fromForm)) { + motionsWithSameCat.push(fromForm); + this.categoryRepo.updateCategoryNumbering( + this.categoryRepo.getCategoryByID(fromForm.category_id), + motionsWithSameCat + ); + } } } } diff --git a/client/src/app/site/motions/models/view-category.ts b/client/src/app/site/motions/models/view-category.ts index 80d3b5a16..a2fd6d7b5 100644 --- a/client/src/app/site/motions/models/view-category.ts +++ b/client/src/app/site/motions/models/view-category.ts @@ -10,9 +10,6 @@ import { BaseViewModel } from '../../base/base-view-model'; */ export class ViewCategory extends BaseViewModel { private _category: Category; - private _edit: boolean; - private _synced: boolean; - private _opened: boolean; public get category(): Category { return this._category; @@ -30,18 +27,6 @@ export class ViewCategory extends BaseViewModel { return this.category ? this.category.prefix : null; } - public set synced(bol: boolean) { - this._synced = bol; - } - - public set edit(bol: boolean) { - this._edit = bol; - } - - public set opened(bol: boolean) { - this._opened = bol; - } - public set prefix(pref: string) { this._category.prefix = pref; } @@ -50,18 +35,6 @@ export class ViewCategory extends BaseViewModel { this._category.name = nam; } - public get opened(): boolean { - return this._opened; - } - - public get synced(): boolean { - return this._synced; - } - - public get edit(): boolean { - return this._edit; - } - public constructor(category?: Category, id?: number, prefix?: string, name?: string) { super(); if (!category) { @@ -71,9 +44,6 @@ export class ViewCategory extends BaseViewModel { category.prefix = prefix; } this._category = category; - this._edit = false; - this._synced = true; - this._opened = false; } public getTitle(): string { diff --git a/client/src/app/site/motions/services/category-repository.service.ts b/client/src/app/site/motions/services/category-repository.service.ts index 17fa7e24b..17406cd6e 100644 --- a/client/src/app/site/motions/services/category-repository.service.ts +++ b/client/src/app/site/motions/services/category-repository.service.ts @@ -8,6 +8,7 @@ import { BaseRepository } from '../../base/base-repository'; import { Motion } from '../../../shared/models/motions/motion'; import { CategoryNumbering } from '../models/category-numbering'; import { HttpService, HTTPMethod } from '../../../core/services/http.service'; + /** * Repository Services for Categories * @@ -40,24 +41,18 @@ export class CategoryRepositoryService extends BaseRepository { - console.log('update: ', update); - console.log('viewCategory: ', viewCategory); - if (this.osInDataStore(viewCategory)) { - return this.update(update, viewCategory); - } else { - return this.dataSend.createModel(viewCategory.category); - } + public create(newCategory: Category): Observable { + return this.dataSend.createModel(newCategory); } - public update(update: Category, viewCategory?: ViewCategory): Observable { + public update(category: Partial, viewCategory?: ViewCategory): Observable { let updateCategory: Category; if (viewCategory) { updateCategory = viewCategory.category; } else { updateCategory = new Category(); } - updateCategory.patchValues(update); + updateCategory.patchValues(category); return this.dataSend.updateModel(updateCategory, HTTPMethod.PUT); } @@ -74,7 +69,7 @@ export class CategoryRepositoryService extends BaseRepository = []; motList.forEach(motion => { - if (motion.category_id === category.id) { + if (motion.category_id && motion.category_id === category.id) { retList.push(motion); } }); @@ -82,34 +77,17 @@ export class CategoryRepositoryService extends BaseRepository cat.id === viewCategory.id)) { - return true; - } - return false; - } - /** * Returns the category for the ID * @param category_id category ID */ public getCategoryByID(category_id: number): Category { const catList = this.DS.getAll(Category); - catList.forEach(category => { - if (category.id === category_id) { - return category; - } - }); - return null; + return catList.find(category => category.id === category_id); } /** - * Updates a Categorys numbering + * Updates a Categories numbering * @param category the category it should be updated in * @param motionList the list of motions on this category */ diff --git a/client/src/app/site/motions/services/change-recommendation-repository.service.ts b/client/src/app/site/motions/services/change-recommendation-repository.service.ts index e71932a12..5e121daf9 100644 --- a/client/src/app/site/motions/services/change-recommendation-repository.service.ts +++ b/client/src/app/site/motions/services/change-recommendation-repository.service.ts @@ -1,15 +1,16 @@ import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; import { DataSendService } from '../../../core/services/data-send.service'; import { User } from '../../../shared/models/users/user'; import { Category } from '../../../shared/models/motions/category'; import { Workflow } from '../../../shared/models/motions/workflow'; -import { Observable } from 'rxjs'; import { BaseRepository } from '../../base/base-repository'; import { DataStoreService } from '../../../core/services/data-store.service'; import { MotionChangeReco } from '../../../shared/models/motions/motion-change-reco'; import { ViewChangeReco } from '../models/view-change-reco'; -import { map } from 'rxjs/operators'; +import { HTTPMethod } from 'app/core/services/http.service'; /** * Repository Services for change recommendations @@ -78,7 +79,7 @@ export class ChangeRecommendationRepositoryService extends BaseRepository { - return this.dataSend.delete(viewModel.changeRecommendation) as Observable; + return this.dataSend.deleteModel(viewModel.changeRecommendation) as Observable; } /** @@ -93,7 +94,7 @@ export class ChangeRecommendationRepositoryService extends BaseRepository, viewModel: ViewChangeReco): Observable { const changeReco = viewModel.changeRecommendation; changeReco.patchValues(update); - return this.dataSend.updateModel(changeReco, 'patch') as Observable; + return this.dataSend.updateModel(changeReco, HTTPMethod.PATCH) as Observable; } /** @@ -117,7 +118,7 @@ export class ChangeRecommendationRepositoryService extends BaseRepository; + return this.dataSend.updateModel(changeReco, HTTPMethod.PATCH) as Observable; } /** @@ -130,6 +131,6 @@ export class ChangeRecommendationRepositoryService extends BaseRepository; + return this.dataSend.updateModel(changeReco, HTTPMethod.PATCH) as Observable; } } diff --git a/client/src/app/site/motions/services/statute-paragraph-repository.service.ts b/client/src/app/site/motions/services/statute-paragraph-repository.service.ts index d16cf7afd..5d9227c52 100644 --- a/client/src/app/site/motions/services/statute-paragraph-repository.service.ts +++ b/client/src/app/site/motions/services/statute-paragraph-repository.service.ts @@ -5,6 +5,7 @@ import { DataStoreService } from '../../../core/services/data-store.service'; import { BaseRepository } from '../../base/base-repository'; import { ViewStatuteParagraph } from '../models/view-statute-paragraph'; import { StatuteParagraph } from '../../../shared/models/motions/statute-paragraph'; +import { HTTPMethod } from 'app/core/services/http.service'; /** * Repository Services for statute paragraphs @@ -41,10 +42,10 @@ export class StatuteParagraphRepositoryService extends BaseRepository { const updateParagraph = viewStatuteParagraph.statuteParagraph; updateParagraph.patchValues(statuteParagraph); - return this.dataSend.updateModel(updateParagraph, 'put'); + return this.dataSend.updateModel(updateParagraph, HTTPMethod.PUT); } public delete(viewStatuteParagraph: ViewStatuteParagraph): Observable { - return this.dataSend.delete(viewStatuteParagraph.statuteParagraph); + return this.dataSend.deleteModel(viewStatuteParagraph.statuteParagraph); } }