diff --git a/package-lock.json b/package-lock.json index 6b9a49c..98b56b5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -359,12 +359,12 @@ "dev": true }, "node_modules/@angular-devkit/schematics": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.9.tgz", - "integrity": "sha512-oNHLNtwbtEJ0dYPPXy1NpfRdSiFsYBl7+ozJklLgNV/AEOxlSi2qlVx6DoxNVjz5XgQ7Z+eoVDMw7ewGPnGSyA==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.11.tgz", + "integrity": "sha512-ben+EGXpCrClnIVAAnEQmhQdKmnnqFhMp5BqMxgOslSYBAmCutLA6rBu5vsc8kZcGian1wt+lueF7G1Uk5cGBg==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.3.9", + "@angular-devkit/core": "13.3.11", "jsonc-parser": "3.0.0", "magic-string": "0.25.7", "ora": "5.4.1", @@ -376,6 +376,55 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": { + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.11.tgz", + "integrity": "sha512-rfqoLMRYhlz0wzKlHx7FfyIyQq8dKTsmbCoIVU1cEIH0gyTMVY7PbVzwRRcO6xp5waY+0hA+0Brriujpuhkm4w==", + "dev": true, + "dependencies": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics/node_modules/ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, "node_modules/@angular-devkit/schematics/node_modules/rxjs": { "version": "6.6.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", @@ -431,16 +480,16 @@ "optional": true }, "node_modules/@angular/cli": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.9.tgz", - "integrity": "sha512-b64mfB7A8vw5QmopEnkCVhGH8zDX5FrQVKKCRlK1dO3GEtAdfhFJb5J7TBbCOwp1XfYJ5jl+biNQy4HoX5HQPw==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.11.tgz", + "integrity": "sha512-LTuQ1wC/VJiHqHx8nYJCx0EJv1Ek7R6VvP/5vmr/+M8oVvJ2zSh/aIbcPg6BTL0YEfMI6nX41mUjPBUfF0q2OA==", "dev": true, "hasInstallScript": true, "dependencies": { - "@angular-devkit/architect": "0.1303.9", - "@angular-devkit/core": "13.3.9", - "@angular-devkit/schematics": "13.3.9", - "@schematics/angular": "13.3.9", + "@angular-devkit/architect": "0.1303.11", + "@angular-devkit/core": "13.3.11", + "@angular-devkit/schematics": "13.3.11", + "@schematics/angular": "13.3.11", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.3", @@ -466,6 +515,64 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular/cli/node_modules/@angular-devkit/architect": { + "version": "0.1303.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.11.tgz", + "integrity": "sha512-JwrWomNqNGjAeKlqV2pimUFlCgFxQy+Vioz9+QAPIrUkvvjbkQ1dZKOe8Ul8eosb1N3Ln282U6qzOpHKfJ4TOg==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "13.3.11", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/cli/node_modules/@angular-devkit/core": { + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.11.tgz", + "integrity": "sha512-rfqoLMRYhlz0wzKlHx7FfyIyQq8dKTsmbCoIVU1cEIH0gyTMVY7PbVzwRRcO6xp5waY+0hA+0Brriujpuhkm4w==", + "dev": true, + "dependencies": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular/cli/node_modules/ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/@angular/cli/node_modules/debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -483,6 +590,12 @@ } } }, + "node_modules/@angular/cli/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, "node_modules/@angular/cli/node_modules/resolve": { "version": "1.22.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", @@ -500,6 +613,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/@angular/cli/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular/cli/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/@angular/common": { "version": "13.3.11", "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.3.11.tgz", @@ -2827,13 +2958,13 @@ } }, "node_modules/@schematics/angular": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.9.tgz", - "integrity": "sha512-tm5wst7+Z8cOgOJ/4JVlYKOFCCOVnqKYFtYf0BIWq6RFBXcw6QqbGW1wXH8ASmuev4QZXKgqc7YKALPpYAKCeQ==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.11.tgz", + "integrity": "sha512-imKBnKYEse0SBVELZO/753nkpt3eEgpjrYkB+AFWF9YfO/4RGnYXDHoH8CFkzxPH9QQCgNrmsVFNiYGS+P/S1A==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.3.9", - "@angular-devkit/schematics": "13.3.9", + "@angular-devkit/core": "13.3.11", + "@angular-devkit/schematics": "13.3.11", "jsonc-parser": "3.0.0" }, "engines": { @@ -2842,6 +2973,73 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@schematics/angular/node_modules/@angular-devkit/core": { + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.11.tgz", + "integrity": "sha512-rfqoLMRYhlz0wzKlHx7FfyIyQq8dKTsmbCoIVU1cEIH0gyTMVY7PbVzwRRcO6xp5waY+0hA+0Brriujpuhkm4w==", + "dev": true, + "dependencies": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@schematics/angular/node_modules/ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@schematics/angular/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/@schematics/angular/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@schematics/angular/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/@socket.io/component-emitter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", @@ -12403,18 +12601,50 @@ } }, "@angular-devkit/schematics": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.9.tgz", - "integrity": "sha512-oNHLNtwbtEJ0dYPPXy1NpfRdSiFsYBl7+ozJklLgNV/AEOxlSi2qlVx6DoxNVjz5XgQ7Z+eoVDMw7ewGPnGSyA==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.11.tgz", + "integrity": "sha512-ben+EGXpCrClnIVAAnEQmhQdKmnnqFhMp5BqMxgOslSYBAmCutLA6rBu5vsc8kZcGian1wt+lueF7G1Uk5cGBg==", "dev": true, "requires": { - "@angular-devkit/core": "13.3.9", + "@angular-devkit/core": "13.3.11", "jsonc-parser": "3.0.0", "magic-string": "0.25.7", "ora": "5.4.1", "rxjs": "6.6.7" }, "dependencies": { + "@angular-devkit/core": { + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.11.tgz", + "integrity": "sha512-rfqoLMRYhlz0wzKlHx7FfyIyQq8dKTsmbCoIVU1cEIH0gyTMVY7PbVzwRRcO6xp5waY+0hA+0Brriujpuhkm4w==", + "dev": true, + "requires": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, "rxjs": { "version": "6.6.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", @@ -12458,15 +12688,15 @@ } }, "@angular/cli": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.9.tgz", - "integrity": "sha512-b64mfB7A8vw5QmopEnkCVhGH8zDX5FrQVKKCRlK1dO3GEtAdfhFJb5J7TBbCOwp1XfYJ5jl+biNQy4HoX5HQPw==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.11.tgz", + "integrity": "sha512-LTuQ1wC/VJiHqHx8nYJCx0EJv1Ek7R6VvP/5vmr/+M8oVvJ2zSh/aIbcPg6BTL0YEfMI6nX41mUjPBUfF0q2OA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1303.9", - "@angular-devkit/core": "13.3.9", - "@angular-devkit/schematics": "13.3.9", - "@schematics/angular": "13.3.9", + "@angular-devkit/architect": "0.1303.11", + "@angular-devkit/core": "13.3.11", + "@angular-devkit/schematics": "13.3.11", + "@schematics/angular": "13.3.11", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.3", @@ -12484,6 +12714,42 @@ "uuid": "8.3.2" }, "dependencies": { + "@angular-devkit/architect": { + "version": "0.1303.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.11.tgz", + "integrity": "sha512-JwrWomNqNGjAeKlqV2pimUFlCgFxQy+Vioz9+QAPIrUkvvjbkQ1dZKOe8Ul8eosb1N3Ln282U6qzOpHKfJ4TOg==", + "dev": true, + "requires": { + "@angular-devkit/core": "13.3.11", + "rxjs": "6.6.7" + } + }, + "@angular-devkit/core": { + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.11.tgz", + "integrity": "sha512-rfqoLMRYhlz0wzKlHx7FfyIyQq8dKTsmbCoIVU1cEIH0gyTMVY7PbVzwRRcO6xp5waY+0hA+0Brriujpuhkm4w==", + "dev": true, + "requires": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, "debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -12493,6 +12759,12 @@ "ms": "2.1.2" } }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, "resolve": { "version": "1.22.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", @@ -12503,6 +12775,21 @@ "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true } } }, @@ -14166,14 +14453,63 @@ } }, "@schematics/angular": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.9.tgz", - "integrity": "sha512-tm5wst7+Z8cOgOJ/4JVlYKOFCCOVnqKYFtYf0BIWq6RFBXcw6QqbGW1wXH8ASmuev4QZXKgqc7YKALPpYAKCeQ==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.11.tgz", + "integrity": "sha512-imKBnKYEse0SBVELZO/753nkpt3eEgpjrYkB+AFWF9YfO/4RGnYXDHoH8CFkzxPH9QQCgNrmsVFNiYGS+P/S1A==", "dev": true, "requires": { - "@angular-devkit/core": "13.3.9", - "@angular-devkit/schematics": "13.3.9", + "@angular-devkit/core": "13.3.11", + "@angular-devkit/schematics": "13.3.11", "jsonc-parser": "3.0.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.11.tgz", + "integrity": "sha512-rfqoLMRYhlz0wzKlHx7FfyIyQq8dKTsmbCoIVU1cEIH0gyTMVY7PbVzwRRcO6xp5waY+0hA+0Brriujpuhkm4w==", + "dev": true, + "requires": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "@socket.io/component-emitter": { diff --git a/src/app/excel-generator/excel-generator.component.html b/src/app/excel-generator/excel-generator.component.html new file mode 100644 index 0000000..47ee018 --- /dev/null +++ b/src/app/excel-generator/excel-generator.component.html @@ -0,0 +1,2 @@ + + diff --git a/src/app/excel-generator/excel-generator.component.sass b/src/app/excel-generator/excel-generator.component.sass new file mode 100644 index 0000000..e69de29 diff --git a/src/app/excel-generator/excel-generator.component.spec.ts b/src/app/excel-generator/excel-generator.component.spec.ts new file mode 100644 index 0000000..fce2a9e --- /dev/null +++ b/src/app/excel-generator/excel-generator.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ExcelGeneratorComponent } from './excel-generator.component'; + +describe('ExcelGeneratorComponent', () => { + let component: ExcelGeneratorComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [ExcelGeneratorComponent] + }); + fixture = TestBed.createComponent(ExcelGeneratorComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/excel-generator/excel-generator.component.ts b/src/app/excel-generator/excel-generator.component.ts new file mode 100644 index 0000000..b4429cb --- /dev/null +++ b/src/app/excel-generator/excel-generator.component.ts @@ -0,0 +1,49 @@ +import { Component } from '@angular/core'; +import * as XLSX from 'xlsx'; + +@Component({ + selector: 'app-excel-generator', + templateUrl: './excel-generator.component.html', + styleUrls: ['./excel-generator.component.sass'] +}) +export class ExcelGeneratorComponent { + generateExcelTemplate() { + + const data = [ + ['Name of resources in program', 'Type of resources', 'Resource Link', 'Resource Status', 'Target role at the resource level', 'Targeted subrole at resource level', 'Start date of resource', 'End date of resource'], + ['Obs Form for All Question type', 'Observation without rubrics', 'https://docs.google.com/spreadsheets/d/1uErekrCkuOXMdIvXsCSOr7YiBk4HcS4iJrh0tdALlsw/edit#gid=2134498639', 'Existing', 'HM,DEO', '', '30-08-2021', '30-08-2022'] + ]; + + + const workbook = XLSX.utils.book_new(); + + + const worksheet = XLSX.utils.aoa_to_sheet(data); + + + XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1'); + + + const excelBuffer = XLSX.write(workbook, { type: 'buffer', bookType: 'xlsx' }); + + + this.saveExcelFile(excelBuffer, 'template.xlsx'); + } + + saveExcelFile(buffer: any, fileName: string) { + const data: Blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); + + + const link = document.createElement('a'); + link.href = window.URL.createObjectURL(data); + link.download = fileName; + + + link.click(); + + + window.URL.revokeObjectURL(link.href); + link.remove(); + } +} + diff --git a/src/app/program-manager-form/program-manager-form.component.html b/src/app/program-manager-form/program-manager-form.component.html new file mode 100644 index 0000000..ea2df32 --- /dev/null +++ b/src/app/program-manager-form/program-manager-form.component.html @@ -0,0 +1,16 @@ +
+ + + + + + + + + + +
+ diff --git a/src/app/program-manager-form/program-manager-form.component.sass b/src/app/program-manager-form/program-manager-form.component.sass new file mode 100644 index 0000000..e69de29 diff --git a/src/app/program-manager-form/program-manager-form.component.spec.ts b/src/app/program-manager-form/program-manager-form.component.spec.ts new file mode 100644 index 0000000..9a7e29c --- /dev/null +++ b/src/app/program-manager-form/program-manager-form.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ProgramManagerFormComponent } from './program-manager-form.component'; + +describe('ProgramManagerFormComponent', () => { + let component: ProgramManagerFormComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [ProgramManagerFormComponent] + }); + fixture = TestBed.createComponent(ProgramManagerFormComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/program-manager-form/program-manager-form.component.ts b/src/app/program-manager-form/program-manager-form.component.ts new file mode 100644 index 0000000..ea3be81 --- /dev/null +++ b/src/app/program-manager-form/program-manager-form.component.ts @@ -0,0 +1,22 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-program-manager-form', + templateUrl: './program-manager-form.component.html', + styleUrls: ['./program-manager-form.component.sass'] +}) +export class ProgramManagerFormComponent { + ssoUser = 'YES'; + loginId = ''; + dikshaUserId = 'dikshauser_5xco'; + onSubmit() { + + const formData = { + ssoUser: this.ssoUser, + loginId: this.loginId, + dikshaUserId: this.dikshaUserId + }; + + + } +} diff --git a/src/app/project-upload/project-upload.component.html b/src/app/project-upload/project-upload.component.html new file mode 100644 index 0000000..e0eecb4 --- /dev/null +++ b/src/app/project-upload/project-upload.component.html @@ -0,0 +1,10 @@ +
+ + +
Title is required
+ + + + +
+ \ No newline at end of file diff --git a/src/app/project-upload/project-upload.component.sass b/src/app/project-upload/project-upload.component.sass new file mode 100644 index 0000000..e69de29 diff --git a/src/app/project-upload/project-upload.component.spec.ts b/src/app/project-upload/project-upload.component.spec.ts new file mode 100644 index 0000000..245a5f5 --- /dev/null +++ b/src/app/project-upload/project-upload.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ProjectUploadComponent } from './project-upload.component'; + +describe('ProjectUploadComponent', () => { + let component: ProjectUploadComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [ProjectUploadComponent] + }); + fixture = TestBed.createComponent(ProjectUploadComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/project-upload/project-upload.component.ts b/src/app/project-upload/project-upload.component.ts new file mode 100644 index 0000000..6e33b61 --- /dev/null +++ b/src/app/project-upload/project-upload.component.ts @@ -0,0 +1,54 @@ +import { Component } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; + +@Component({ + selector: 'app-project-upload', + templateUrl: './project-upload.component.html', + styleUrls: ['./project-upload.component.sass'] +}) +export class ProjectUploadComponent { + projectUploadForm: FormGroup; + + constructor(private formBuilder: FormBuilder) { + this.projectUploadForm = this.formBuilder.group({ + title: ['', Validators.required], + projectId: ['', Validators.required], + isSSOUser: ['', Validators.required], + dikshaLoginId: ['', Validators.required], + categories: ['', Validators.required], + objective: ['', Validators.required], + duration: ['', Validators.required], + recommendedFor: ['', Validators.required], + keywords: ['', Validators.required], + learningResources1_name: [''], + learningResources1_link: [''], + learningResources2_name: [''], + learningResources2_link: [''], + learningResources3_name: [''], + learningResources3_link: [''], + hasCertificate: ['', Validators.required], + projectLevelEvidence: ['', Validators.required], + minNoOfEvidence: [''] + }); + } + + onSubmit() { + if (this.projectUploadForm.valid) { + + const projectData = this.projectUploadForm.value; + console.log(projectData); + } else { + + this.markFormGroupTouched(this.projectUploadForm); + } + } + + markFormGroupTouched(formGroup: FormGroup) { + Object.values(formGroup.controls).forEach(control => { + control.markAsTouched(); + if (control instanceof FormGroup) { + this.markFormGroupTouched(control); + } + }); + } +}