diff --git a/package-lock.json b/package-lock.json index 4c22057..5d61679 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,11 +16,13 @@ "@angular/platform-browser": "^18.2.0", "@angular/platform-browser-dynamic": "^18.2.0", "@angular/router": "^18.2.0", + "@types/swiper": "^5.4.3", "chart.js": "^4.4.6", "dexie": "^4.0.10", "primeicons": "^7.0.0", "primeng": "^17.18.11", "rxjs": "~7.8.0", + "swiper": "^11.2.1", "tslib": "^2.3.0", "zone.js": "~0.14.10" }, @@ -290,12 +292,13 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "18.2.11", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.2.11.tgz", - "integrity": "sha512-efRK3FotTFp4KD5u42jWfXpHUALXB9kJNsWiB4wEImKFH6CN+vjBspJQuLqk2oeBFh/7D2qRMc5P+2tZHM5hdw==", + "version": "18.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.2.12.tgz", + "integrity": "sha512-mMea9txHbnCX5lXLHlo0RAgfhFHDio45/jMsREM2PA8UtVf2S8ltXz7ZwUrUyMQRv8vaSfn4ijDstF4hDMnRgQ==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "18.2.11", + "@angular-devkit/core": "18.2.12", "jsonc-parser": "3.3.1", "magic-string": "0.30.11", "ora": "5.4.1", @@ -307,6 +310,34 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": { + "version": "18.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.12.tgz", + "integrity": "sha512-NtB6ypsaDyPE6/fqWOdfTmACs+yK5RqfH5tStEzWFeeDsIEDYKsJ06ypuRep7qTjYus5Rmttk0Ds+cFgz8JdUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.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/animations": { "version": "18.2.10", "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.10.tgz", @@ -390,17 +421,18 @@ } }, "node_modules/@angular/cli": { - "version": "18.2.11", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.2.11.tgz", - "integrity": "sha512-0JI1xjOLRemBPjdT/yVlabxc3Zkjqa/lhvVxxVC1XhKoW7yGxIGwNrQ4pka4CcQtCuktO6KPMmTGIu8YgC3cpw==", + "version": "18.2.12", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.2.12.tgz", + "integrity": "sha512-xhuZ/b7IhqNw1MgXf+arWf4x+GfUSt/IwbdWU4+CO8A7h0Y46zQywouP/KUK3cMQZfVdHdciTBvlpF3vFacA6Q==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1802.11", - "@angular-devkit/core": "18.2.11", - "@angular-devkit/schematics": "18.2.11", + "@angular-devkit/architect": "0.1802.12", + "@angular-devkit/core": "18.2.12", + "@angular-devkit/schematics": "18.2.12", "@inquirer/prompts": "5.3.8", "@listr2/prompt-adapter-inquirer": "2.0.15", - "@schematics/angular": "18.2.11", + "@schematics/angular": "18.2.12", "@yarnpkg/lockfile": "1.1.0", "ini": "4.1.3", "jsonc-parser": "3.3.1", @@ -422,6 +454,50 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular/cli/node_modules/@angular-devkit/architect": { + "version": "0.1802.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1802.12.tgz", + "integrity": "sha512-bepVb2/GtJppYKaeW8yTGE6egmoWZ7zagFDsmBdbF+BYp+HmeoPsclARcdryBPVq68zedyTRdvhWSUTbw1AYuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "18.2.12", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.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": "18.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.12.tgz", + "integrity": "sha512-NtB6ypsaDyPE6/fqWOdfTmACs+yK5RqfH5tStEzWFeeDsIEDYKsJ06ypuRep7qTjYus5Rmttk0Ds+cFgz8JdUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.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/common": { "version": "18.2.10", "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.10.tgz", @@ -3950,13 +4026,14 @@ ] }, "node_modules/@schematics/angular": { - "version": "18.2.11", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.2.11.tgz", - "integrity": "sha512-jT54mc9+hPOwie9bji/g2krVuK1kkNh2PNFGwfgCg3Ofmt3hcyOBai1DKuot5uLTX4VCCbvfwiVR/hJniQl2SA==", + "version": "18.2.12", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.2.12.tgz", + "integrity": "sha512-sIoeipsisK5eTLW3XuNZYcal83AfslBbgI7LnV+3VrXwpasKPGHwo2ZdwhCd2IXAkuJ02Iyu7MyV0aQRM9i/3g==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "18.2.11", - "@angular-devkit/schematics": "18.2.11", + "@angular-devkit/core": "18.2.12", + "@angular-devkit/schematics": "18.2.12", "jsonc-parser": "3.3.1" }, "engines": { @@ -3965,6 +4042,34 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@schematics/angular/node_modules/@angular-devkit/core": { + "version": "18.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.12.tgz", + "integrity": "sha512-NtB6ypsaDyPE6/fqWOdfTmACs+yK5RqfH5tStEzWFeeDsIEDYKsJ06ypuRep7qTjYus5Rmttk0Ds+cFgz8JdUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.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/@sigstore/bundle": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz", @@ -4315,6 +4420,12 @@ "@types/node": "*" } }, + "node_modules/@types/swiper": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@types/swiper/-/swiper-5.4.3.tgz", + "integrity": "sha512-hJXpVeANf+XQXgbvmuFZdsnaSOKqOEZcaLDnHhZOJDRow+lfboatwubW+Ay9XiHobMGyEomkgpXSYRlDVn4gMQ==", + "license": "MIT" + }, "node_modules/@types/wrap-ansi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", @@ -11817,6 +11928,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/swiper": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.2.1.tgz", + "integrity": "sha512-62G69+iQRIfUqTmJkWpZDcX891Ra8O9050ckt1/JI2H+0483g+gq0m7gINecDqMtDh2zt5dK+uzBRxGhGOOvQA==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "license": "MIT", + "engines": { + "node": ">= 4.7.0" + } + }, "node_modules/symbol-observable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", diff --git a/package.json b/package.json index 334f855..34494d1 100644 --- a/package.json +++ b/package.json @@ -18,11 +18,13 @@ "@angular/platform-browser": "^18.2.0", "@angular/platform-browser-dynamic": "^18.2.0", "@angular/router": "^18.2.0", + "@types/swiper": "^5.4.3", "chart.js": "^4.4.6", "dexie": "^4.0.10", "primeicons": "^7.0.0", "primeng": "^17.18.11", "rxjs": "~7.8.0", + "swiper": "^11.2.1", "tslib": "^2.3.0", "zone.js": "~0.14.10" }, diff --git a/public/10-12.jpg b/public/10-12.jpg new file mode 100644 index 0000000..e13283e Binary files /dev/null and b/public/10-12.jpg differ diff --git a/public/12-13.jpg b/public/12-13.jpg new file mode 100644 index 0000000..31f458a Binary files /dev/null and b/public/12-13.jpg differ diff --git a/public/13-15.jpg b/public/13-15.jpg new file mode 100644 index 0000000..db9ed2c Binary files /dev/null and b/public/13-15.jpg differ diff --git a/public/15-16.jpg b/public/15-16.jpg new file mode 100644 index 0000000..96438a7 Binary files /dev/null and b/public/15-16.jpg differ diff --git a/public/16-18.jpg b/public/16-18.jpg new file mode 100644 index 0000000..95f00d6 Binary files /dev/null and b/public/16-18.jpg differ diff --git a/public/18-20.jpg b/public/18-20.jpg new file mode 100644 index 0000000..a090d3a Binary files /dev/null and b/public/18-20.jpg differ diff --git a/public/20-22.jpg b/public/20-22.jpg new file mode 100644 index 0000000..8be9a29 Binary files /dev/null and b/public/20-22.jpg differ diff --git a/public/22-24.jpg b/public/22-24.jpg new file mode 100644 index 0000000..63cbdf2 Binary files /dev/null and b/public/22-24.jpg differ diff --git a/public/22.jpg b/public/22.jpg new file mode 100644 index 0000000..f6d16e3 Binary files /dev/null and b/public/22.jpg differ diff --git a/public/3-7.jpg b/public/3-7.jpg new file mode 100644 index 0000000..cc7072c Binary files /dev/null and b/public/3-7.jpg differ diff --git a/public/7-9.jpg b/public/7-9.jpg new file mode 100644 index 0000000..78b459c Binary files /dev/null and b/public/7-9.jpg differ diff --git a/public/9-10.jpg b/public/9-10.jpg new file mode 100644 index 0000000..ce392af Binary files /dev/null and b/public/9-10.jpg differ diff --git a/public/IMG-20250114-WA0014.jpg b/public/IMG-20250114-WA0014.jpg new file mode 100644 index 0000000..539b9da Binary files /dev/null and b/public/IMG-20250114-WA0014.jpg differ diff --git a/public/IMG-20250114-WA0015.jpg b/public/IMG-20250114-WA0015.jpg new file mode 100644 index 0000000..ed0a291 Binary files /dev/null and b/public/IMG-20250114-WA0015.jpg differ diff --git a/public/IMG-20250121-WA0017.jpg b/public/IMG-20250121-WA0017.jpg new file mode 100644 index 0000000..1972bc9 Binary files /dev/null and b/public/IMG-20250121-WA0017.jpg differ diff --git a/public/IMG-20250121-WA0018.jpg b/public/IMG-20250121-WA0018.jpg new file mode 100644 index 0000000..91c78c2 Binary files /dev/null and b/public/IMG-20250121-WA0018.jpg differ diff --git a/public/IMG-20250121-WA0019.jpg b/public/IMG-20250121-WA0019.jpg new file mode 100644 index 0000000..6a4c522 Binary files /dev/null and b/public/IMG-20250121-WA0019.jpg differ diff --git a/public/IMG-20250121-WA0020.jpg b/public/IMG-20250121-WA0020.jpg new file mode 100644 index 0000000..5def1cf Binary files /dev/null and b/public/IMG-20250121-WA0020.jpg differ diff --git a/public/IMG-20250121-WA0021.jpg b/public/IMG-20250121-WA0021.jpg new file mode 100644 index 0000000..595c52c Binary files /dev/null and b/public/IMG-20250121-WA0021.jpg differ diff --git a/public/IMG-20250121-WA0022.jpg b/public/IMG-20250121-WA0022.jpg new file mode 100644 index 0000000..be94729 Binary files /dev/null and b/public/IMG-20250121-WA0022.jpg differ diff --git a/public/IMG-20250121-WA0023.jpg b/public/IMG-20250121-WA0023.jpg new file mode 100644 index 0000000..41b9fed Binary files /dev/null and b/public/IMG-20250121-WA0023.jpg differ diff --git a/public/IMG-20250121-WA0024.jpg b/public/IMG-20250121-WA0024.jpg new file mode 100644 index 0000000..35cda45 Binary files /dev/null and b/public/IMG-20250121-WA0024.jpg differ diff --git a/public/IMG-20250121-WA0025.jpg b/public/IMG-20250121-WA0025.jpg new file mode 100644 index 0000000..174a73c Binary files /dev/null and b/public/IMG-20250121-WA0025.jpg differ diff --git a/public/IMG-20250121-WA0026.jpg b/public/IMG-20250121-WA0026.jpg new file mode 100644 index 0000000..c7319ef Binary files /dev/null and b/public/IMG-20250121-WA0026.jpg differ diff --git a/public/IMG-20250121-WA0027.jpg b/public/IMG-20250121-WA0027.jpg new file mode 100644 index 0000000..814fb9d Binary files /dev/null and b/public/IMG-20250121-WA0027.jpg differ diff --git a/public/IMG-20250121-WA0028.jpg b/public/IMG-20250121-WA0028.jpg new file mode 100644 index 0000000..fdc0f42 Binary files /dev/null and b/public/IMG-20250121-WA0028.jpg differ diff --git a/public/IMG-20250121-WA0029.jpg b/public/IMG-20250121-WA0029.jpg new file mode 100644 index 0000000..959bb59 Binary files /dev/null and b/public/IMG-20250121-WA0029.jpg differ diff --git a/public/IMG_0040.JPG b/public/IMG_0040.JPG new file mode 100644 index 0000000..d7e87ec Binary files /dev/null and b/public/IMG_0040.JPG differ diff --git a/public/IMG_0107.JPG b/public/IMG_0107.JPG new file mode 100644 index 0000000..9284232 Binary files /dev/null and b/public/IMG_0107.JPG differ diff --git a/public/IMG_0188 (1).JPG b/public/IMG_0188 (1).JPG new file mode 100644 index 0000000..0ea32b7 Binary files /dev/null and b/public/IMG_0188 (1).JPG differ diff --git a/public/IMG_0188.JPG b/public/IMG_0188.JPG new file mode 100644 index 0000000..3dda369 Binary files /dev/null and b/public/IMG_0188.JPG differ diff --git a/public/IMG_0205.JPG b/public/IMG_0205.JPG new file mode 100644 index 0000000..52c6302 Binary files /dev/null and b/public/IMG_0205.JPG differ diff --git a/public/IMG_0407.JPG b/public/IMG_0407.JPG new file mode 100644 index 0000000..94f403b Binary files /dev/null and b/public/IMG_0407.JPG differ diff --git a/public/IMG_0411.JPG b/public/IMG_0411.JPG new file mode 100644 index 0000000..3de0d6e Binary files /dev/null and b/public/IMG_0411.JPG differ diff --git a/public/IMG_0705.JPG b/public/IMG_0705.JPG new file mode 100644 index 0000000..635ee35 Binary files /dev/null and b/public/IMG_0705.JPG differ diff --git a/public/IMG_1132.JPG b/public/IMG_1132.JPG new file mode 100644 index 0000000..117624b Binary files /dev/null and b/public/IMG_1132.JPG differ diff --git a/public/IMG_1328.JPG b/public/IMG_1328.JPG new file mode 100644 index 0000000..8e11a14 Binary files /dev/null and b/public/IMG_1328.JPG differ diff --git a/public/IMG_1332.JPG b/public/IMG_1332.JPG new file mode 100644 index 0000000..4f05681 Binary files /dev/null and b/public/IMG_1332.JPG differ diff --git a/public/IMG_3310.JPG b/public/IMG_3310.JPG new file mode 100644 index 0000000..70c7152 Binary files /dev/null and b/public/IMG_3310.JPG differ diff --git a/public/IMG_3501.JPG b/public/IMG_3501.JPG new file mode 100644 index 0000000..60a7a60 Binary files /dev/null and b/public/IMG_3501.JPG differ diff --git a/public/IMG_5537.JPG b/public/IMG_5537.JPG new file mode 100644 index 0000000..93a2acf Binary files /dev/null and b/public/IMG_5537.JPG differ diff --git a/public/IMG_6042.JPG b/public/IMG_6042.JPG new file mode 100644 index 0000000..5f0e8b6 Binary files /dev/null and b/public/IMG_6042.JPG differ diff --git a/public/approve.svg b/public/approve.svg new file mode 100644 index 0000000..012ae49 --- /dev/null +++ b/public/approve.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/arrow-up-right.svg b/public/arrow-up-right.svg new file mode 100644 index 0000000..c1f90d7 --- /dev/null +++ b/public/arrow-up-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/bg-mission.png b/public/bg-mission.png new file mode 100644 index 0000000..2472a04 Binary files /dev/null and b/public/bg-mission.png differ diff --git a/public/boxes.png b/public/boxes.png new file mode 100644 index 0000000..683c321 Binary files /dev/null and b/public/boxes.png differ diff --git a/public/boxes2.png b/public/boxes2.png new file mode 100644 index 0000000..8bd0171 Binary files /dev/null and b/public/boxes2.png differ diff --git a/public/commandant.jpg b/public/commandant.jpg new file mode 100644 index 0000000..394ff71 Binary files /dev/null and b/public/commandant.jpg differ diff --git a/public/commandant.png b/public/commandant.png new file mode 100644 index 0000000..6771aa7 Binary files /dev/null and b/public/commandant.png differ diff --git a/public/dic-42-logo.wbp b/public/dic-42-logo.wbp new file mode 100644 index 0000000..f1523d0 Binary files /dev/null and b/public/dic-42-logo.wbp differ diff --git a/public/dic-logo-big.svg b/public/dic-logo-big.svg new file mode 100644 index 0000000..7f636f4 --- /dev/null +++ b/public/dic-logo-big.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/dic-logo.png b/public/dic-logo.png new file mode 100644 index 0000000..1fc6558 Binary files /dev/null and b/public/dic-logo.png differ diff --git a/public/dic.png b/public/dic.png new file mode 100644 index 0000000..180949b Binary files /dev/null and b/public/dic.png differ diff --git a/public/greeting.png b/public/greeting.png new file mode 100644 index 0000000..fa34e8d Binary files /dev/null and b/public/greeting.png differ diff --git a/public/group.png b/public/group.png new file mode 100644 index 0000000..fcb214a Binary files /dev/null and b/public/group.png differ diff --git a/public/icon.svg b/public/icon.svg new file mode 100644 index 0000000..6fb2bf8 --- /dev/null +++ b/public/icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/image 156.png b/public/image 156.png new file mode 100644 index 0000000..9d780bb Binary files /dev/null and b/public/image 156.png differ diff --git a/public/image 157.png b/public/image 157.png new file mode 100644 index 0000000..5b5a2c0 Binary files /dev/null and b/public/image 157.png differ diff --git a/public/image 158.png b/public/image 158.png new file mode 100644 index 0000000..28826d7 Binary files /dev/null and b/public/image 158.png differ diff --git a/public/image 168.png b/public/image 168.png new file mode 100644 index 0000000..df0d3e7 Binary files /dev/null and b/public/image 168.png differ diff --git a/public/info-circle-red.svg b/public/info-circle-red.svg new file mode 100644 index 0000000..2afe09b --- /dev/null +++ b/public/info-circle-red.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/info-circle.svg b/public/info-circle.svg new file mode 100644 index 0000000..b30d64d --- /dev/null +++ b/public/info-circle.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/lines.png b/public/lines.png new file mode 100644 index 0000000..d799ffd Binary files /dev/null and b/public/lines.png differ diff --git a/public/marching.png b/public/marching.png new file mode 100644 index 0000000..0891282 Binary files /dev/null and b/public/marching.png differ diff --git a/public/play.svg b/public/play.svg new file mode 100644 index 0000000..f2d0e73 --- /dev/null +++ b/public/play.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/send.png b/public/send.png new file mode 100644 index 0000000..f0cdc67 Binary files /dev/null and b/public/send.png differ diff --git a/public/sitting.png b/public/sitting.png new file mode 100644 index 0000000..c7d0d5d Binary files /dev/null and b/public/sitting.png differ diff --git a/public/upload.svg b/public/upload.svg new file mode 100644 index 0000000..c816549 --- /dev/null +++ b/public/upload.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/video.png b/public/video.png new file mode 100644 index 0000000..ef1f689 Binary files /dev/null and b/public/video.png differ diff --git a/src/app/app.module.ts b/src/app/app.module.ts index cde9778..aafb43b 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -9,6 +9,8 @@ import { HttpClientModule } from '@angular/common/http'; import { HashLocationStrategy, LocationStrategy } from '@angular/common'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; + + @NgModule({ declarations: [ AppComponent, diff --git a/src/app/shared/apply-button/apply-button.component.html b/src/app/shared/apply-button/apply-button.component.html index 914d3d4..2967acb 100644 --- a/src/app/shared/apply-button/apply-button.component.html +++ b/src/app/shared/apply-button/apply-button.component.html @@ -1,4 +1,4 @@ - + Apply here. diff --git a/src/app/shared/assignment-detail/assignment-detail.component.html b/src/app/shared/assignment-detail/assignment-detail.component.html index 1dbe29a..d9d27e1 100644 --- a/src/app/shared/assignment-detail/assignment-detail.component.html +++ b/src/app/shared/assignment-detail/assignment-detail.component.html @@ -1,190 +1,240 @@ +
+ +
+

ELE 321

+

Electricity & Power

+
-
- -
-

Assignment Details

-

- Returned on - 12:30 AM | 22 September 2023 - - - +

+
+

Assignment

+

+ Assignment Descriptions: The basic entry qualification for admission + into the M.Sc. programme is a Bachelor’s Degree with at least a + Second-Class Lower Division with not less than 3.00 GPA or its + equivalent. Also, candidates with appropriate Postgraduate Diploma of + the University of Nigeria or of other recognized Universities with at + least 3.50 GPA on a 5-point scale. In addition, the candidate must + satisfy the Departmental O’Level and/or Direct Entry general entry + requirements for degree programmes.

- - -
-
- - - -
-
-

Bello Ahmad

-

Student ID: TIPSG5682

- View Profile -
- -
-

International Relations and Diplomacy 1

-
-

Batch 3CO - JVY

-

|

-

12:40 PM

-

|

-

03 Jan 2023

- Status: Pass -
+ + + + + + -
-

- Course: International Relations and Diplomacy -

-

- Subject: Criminology -

-

- Total Marks: 50 -

-

- Passing Percentage: - 70% -

+
+

Bello Ahmad

+

Student ID: TIPSG5682

+ View Profile
- - -
-

Instructor's Attachments

- +
--> + + + -
-

Result

-
- -

Criminology Mid Sem Question Paper.pdf

- -
+
--> + + + + + + + + + + + +

+ Criminology Mid Sem Question Paper.pdf +

+ +
+
--> +
+ +
+
+

{{ assignmentDetail?.course }}

+

{{ assignmentDetail?.assignment_title }}

+
- - +
+
+

Assignment

+

+ Assignment Descriptions: The basic entry qualification for admission + into the M.Sc. programme is a Bachelor’s Degree with at least a + Second-Class Lower Division with not less than 3.00 GPA or its + equivalent. Also, candidates with appropriate Postgraduate Diploma of + the University of Nigeria or of other recognized Universities with at + least 3.50 GPA on a 5-point scale. In addition, the candidate must + satisfy the Departmental O’Level and/or Direct Entry general entry + requirements for degree programmes. +

+
+ +
+ +
+
+ + + +
+
+ Upload Assignment
+
- - + +
-
- -
- -
- +
diff --git a/src/app/shared/assignment-detail/assignment-detail.component.ts b/src/app/shared/assignment-detail/assignment-detail.component.ts index 03d050b..cf1e79d 100644 --- a/src/app/shared/assignment-detail/assignment-detail.component.ts +++ b/src/app/shared/assignment-detail/assignment-detail.component.ts @@ -2,6 +2,13 @@ import { Component, Input, Output, EventEmitter } from '@angular/core'; import { HttpServiceService } from '../../services/http-service.service'; import { FormBuilder, Validators } from '@angular/forms'; + +enum UploadState { + INITIAL, + SUCCESS, + ERROR +} + @Component({ selector: 'app-assignment-detail', templateUrl: './assignment-detail.component.html', @@ -9,54 +16,172 @@ import { FormBuilder, Validators } from '@angular/forms'; }) export class AssignmentDetailComponent { @Input() viewer!:string; -@Input() assignmentDetail:any; +@Input() assignmentDetail:any = {}; isDragging = false; // State for drag-and-drop file: File | null = null; // Selected file assignmentForm:any; loading:boolean = false; + result: any; constructor(private api:HttpServiceService, private fb:FormBuilder){} - ngOnInit(){ - this.assignmentForm = this.fb.group({ - link: ['', Validators.required], - }) + // assignment-detail.component.ts + ngOnInit(){ + console.log('assignmentDetail:', this.assignmentDetail); + + this.assignmentForm = this.fb.group({ + submission_url: ['', Validators.required], + assignment_id: ['', Validators.required] + }) + + + } + students = [ + { + name: "Bright Musa", + department: "Inland Security", + matric_number: "123456", + submissions: "" + } + ] + + tableHeader = ['Name', 'Department', 'Matric Number', 'Submisssions'] + + + + save () { + this.assignmentForm.patchValue({assignment_id: this.assignmentDetail.assignment_id}) + console.log('assignment id', this.assignmentForm.get('assignment_id').value); + console.log(this.assignmentForm.value) + // this.api.post(`students/assignments/submit`, this.assignmentForm.value).subscribe( + // (response) => { + // this.result = response; + // console.log('Submitted successfully:', this.result); + // this.loading = true; + + // }, + // (error) => { + // console.error('Error submitting assignment:', error); + // } + + + // ); } - save(){} - // Handle drag over + //Handle drag over + // onDragOver(event: DragEvent): void { + // event.preventDefault(); + // event.stopPropagation(); + // this.isDragging = true; + // } + + // Handle drag leave + // onDragLeave(event: DragEvent): void { + // event.preventDefault(); + // event.stopPropagation(); + // this.isDragging = false; + // } + + // Handle file drop + // onDrop(event: DragEvent): void { + // event.preventDefault(); + // event.stopPropagation(); + // this.isDragging = false; + + // if (event.dataTransfer && event.dataTransfer.files.length > 0) { + // this.file = event.dataTransfer.files[0]; + // } + // } + + // Handle file selection + // onFileSelected(event: Event): void { + // const input = event.target as HTMLInputElement; + // if (input.files && input.files.length > 0) { + // this.file = input.files[0]; + // } + // } + + + UploadState = UploadState; // Make enum available to template + currentState = UploadState.INITIAL; + dragOver = false; + errorMessage = ''; + onDragOver(event: DragEvent): void { event.preventDefault(); event.stopPropagation(); - this.isDragging = true; + this.dragOver = true; } - // Handle drag leave onDragLeave(event: DragEvent): void { event.preventDefault(); event.stopPropagation(); - this.isDragging = false; + this.dragOver = false; } - // Handle file drop onDrop(event: DragEvent): void { event.preventDefault(); event.stopPropagation(); - this.isDragging = false; + this.dragOver = false; - if (event.dataTransfer && event.dataTransfer.files.length > 0) { - this.file = event.dataTransfer.files[0]; + const files = event.dataTransfer?.files; + if (files) { + this.handleFiles(files); } } - // Handle file selection - onFileSelected(event: Event): void { + onFileSelect(event: Event): void { const input = event.target as HTMLInputElement; - if (input.files && input.files.length > 0) { - this.file = input.files[0]; + if (input.files) { + this.handleFiles(input.files); + } + } + + private handleFiles(files: FileList): void { + const file = files[0]; + if (!file) return; + + // Check file type + const validTypes = ['image/svg+xml', 'image/png', 'image/jpeg', 'image/gif']; + if (!validTypes.includes(file.type)) { + this.errorMessage = 'Please upload an SVG, PNG, JPG, or GIF file.'; + this.currentState = UploadState.ERROR; + return; + } + // Check file size (800x400px max approximated to ~1MB) + if (file.size > 1024 * 1024) { + this.errorMessage = 'File size exceeds maximum limit.'; + this.currentState = UploadState.ERROR; + return; } + + // Simulate file upload with random success/failure + this.uploadFile(file); + } + + private uploadFile(file: File): void { + // Simulate API call + setTimeout(() => { + // Randomly succeed or fail for demonstration + if (Math.random() > 0.5) { + this.currentState = UploadState.SUCCESS; + } else { + this.errorMessage = 'Upload failed. Please try again.'; + this.currentState = UploadState.ERROR; + } + }, 1500); } + + tryAgain(): void { + this.currentState = UploadState.INITIAL; + this.errorMessage = ''; + } + + uploadAnother(): void { + this.currentState = UploadState.INITIAL; + } + } diff --git a/src/app/shared/assignment/assignment.component.html b/src/app/shared/assignment/assignment.component.html index 1430837..dadefc7 100644 --- a/src/app/shared/assignment/assignment.component.html +++ b/src/app/shared/assignment/assignment.component.html @@ -1,6 +1,211 @@ +
+
+

+ Upcoming Classes +

+
+ +
+
+
+
+

+ {{class.course_code || 'ELE 321'}} +

+

+ {{class.course_name || 'Introduction to Computer Science'}} +

+
+
+
+ {{ (class.start_date) | date:'hh:mm' }} +
+
+
+ +
+

Lecturer-in-charge:

+

{{class.lecturer || 'Prof Aiyede'}}

+
+ +
+
+ Join Class +
+
+
+
+
+
+
+
+ +
+ +
+
+

+ Upcoming Classes +

+
+ + + + +
+
+
+ +
+
+
+
+

+ {{class.course_code || 'ELE 321'}} +

+

+ {{class.course_name || 'Introduction to Computer Science'}} +

+
+
+
+ {{ (class.start_date) | date:'hh:mm' }} +
+
+
+ +
+
+ Start Class +
+
+
+
+
+
+
+
+ +
+
+

+ Assignments +

+ +
+ +
+
+
+
+

+ {{assignment.class || 'ELE 321'}} +

+

+ {{assignment.assignment_title || 'Introduction to Computer Science'}} +

+
+
+
+ {{assignment.due_time || "12:00"}} +
+
+
+ +
+

Lecturer-in-charge:

+

Prof Aiyede

+
+ +
+
+ Update Submission + Assignment Details +
+
+
+
+
+
+
+
+ +
+
+
+

+ Assignments +

+
+ + + + +
+
+ +
+ +
+
+
+
+

+ {{assignment.class || 'ELE 321'}} +

+

+ {{assignment.assignment_title || 'Introduction to Computer Science'}} +

+
+
+ +
+

Deadline:

+
+ {{assignment.due_time || "12:00"}} +
+
+ +
+
+ Update Submission + Assignment Details +
+
+ +
+
+ Open Submissions + Close Submissions +
+
+
+
+
+
+
+
+ + + + + + + + + + + + - + + -
- + @@ -85,4 +289,4 @@
- + diff --git a/src/app/shared/assignment/assignment.component.ts b/src/app/shared/assignment/assignment.component.ts index 3ebdcb1..149dd75 100644 --- a/src/app/shared/assignment/assignment.component.ts +++ b/src/app/shared/assignment/assignment.component.ts @@ -1,5 +1,6 @@ import { Component, Input, Output, EventEmitter } from '@angular/core'; import { StorageService } from '../../services/storage.service'; +import { Router } from '@angular/router'; @Component({ selector: 'app-assignment', @@ -12,9 +13,10 @@ export class AssignmentComponent { assignmentDetail = [] @Input() viewer!:string; @Input() assignments:any; + @Input() classes: any; - constructor(private storage: StorageService){} + constructor(private storage: StorageService, private router: Router){} ngOnInit(){ let data = this.storage.getJson('user') @@ -28,6 +30,16 @@ export class AssignmentComponent { return this.assignments.find((assignment:any) => assignment.assignment_id === id) || null; } + visibleClass: boolean = false; + visibleAssignment: boolean = false; + + showClassModal() { + this.visibleClass = true; + } + + showAssignmentModal() { + this.visibleAssignment = true; +} toggleViewAssignmentDetail(viewer:string, id:any) { console.log('viewer', viewer, 'id', id, 'assignments', this.assignments) @@ -43,4 +55,8 @@ export class AssignmentComponent { } } + + route(page:string){ + this.router.navigate([page]); +} } diff --git a/src/app/shared/classes/classes.component.html b/src/app/shared/classes/classes.component.html deleted file mode 100644 index 0bb4690..0000000 --- a/src/app/shared/classes/classes.component.html +++ /dev/null @@ -1 +0,0 @@ -

classes works!

diff --git a/src/app/shared/classes/classes.component.ts b/src/app/shared/classes/classes.component.ts deleted file mode 100644 index d0483d5..0000000 --- a/src/app/shared/classes/classes.component.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-classes', - templateUrl: './classes.component.html', - styleUrl: './classes.component.scss' -}) -export class ClassesComponent { - -} diff --git a/src/app/shared/courses-card/courses-card.component.html b/src/app/shared/courses-card/courses-card.component.html index 1044a55..bb33365 100644 --- a/src/app/shared/courses-card/courses-card.component.html +++ b/src/app/shared/courses-card/courses-card.component.html @@ -1,3 +1,9 @@ +
+
+
+

My Courses

+
+
@@ -24,40 +30,97 @@
+
-
+
-
-
- International Relations and Diplomacy -
+
+
+

+ {{course.course_code || 'ELE 321'}} +

+

+ {{course.course_name}} +

+
+
+

+ {{course.units + ' units' || '4 Units'}} +

+
-
+
+

Lecturer-in-charge:

+

{{course.lecturer_in_charge}}

+
+ + -
-
- Watch video +
+
- - - + + Watch videos
-
-
+
+ +
+
+
+
+

+ {{course.course_code || 'ELE 321'}} +

+

+ {{course.course_name}} +

+
+
+

+ {{course.units || '4 Units'}} +

+
+
+ +
+

Lecturer-in-charge:

+

Prof Aiyede

+
+ + + +
+
+ + + + Watch videos +
+
+
+
+ + +
+ +
+
+

My Courses +

+ + {{courses.length}} + +
+

These are courses you are teaching

+ + +
+ + + +
+ +
+
+

+ {{course.course_code || 'ELE 321'}} +

+

+ {{course.course_name}} +

+
+
+

+ {{course.course_units + ' units' || '4 Units'}} +

+
+
+
+

+ Total No. of videos +

+ {{course.total_videos}} +
+
+

+ Students +

+ {{course.students_no}} +
+
+
+ + + + Upload videos +
+
+ +
+
+
+
\ No newline at end of file diff --git a/src/app/shared/courses-card/courses-card.component.ts b/src/app/shared/courses-card/courses-card.component.ts index 945676f..e1fd0e0 100644 --- a/src/app/shared/courses-card/courses-card.component.ts +++ b/src/app/shared/courses-card/courses-card.component.ts @@ -8,6 +8,7 @@ import { Router } from '@angular/router'; }) export class CoursesCardComponent { calender:boolean = false; + @Input() viewer!:string; @Input() courses:any; constructor(private router:Router){} diff --git a/src/app/shared/exams-detail/exams-detail.component.html b/src/app/shared/exams-detail/exams-detail.component.html index d173d11..149ae85 100644 --- a/src/app/shared/exams-detail/exams-detail.component.html +++ b/src/app/shared/exams-detail/exams-detail.component.html @@ -1,4 +1,4 @@ - + -
+ -
-

{{examDetail[0].exam_title}}

-
+ -

{{examDetail[0].result_date}}

+ -
+ -

+ -
+ + + +
+ + + +
+

ELE 321

+

Electricity & Power

+
+ +
+
+
+

Upload your Exam Questions

+

This is entirely voluntary and will benefit your students.

+
+
+
+
+ + + + + +
+
+

Upload your document

+

PDF format • Max. 5MB

+
+
+
+ +
+
+
+
+
+

Set Passing Criteria

+

This determines If you Student fail or pass the course

+
+
+
+
+

Pass Mark

+
+
+ +
+
+
+ +
+
+
+
+ +
+
+

Upload Results

+ +
+ +
+
diff --git a/src/app/shared/exams-detail/exams-detail.component.ts b/src/app/shared/exams-detail/exams-detail.component.ts index b0ff4ba..d2a8e6a 100644 --- a/src/app/shared/exams-detail/exams-detail.component.ts +++ b/src/app/shared/exams-detail/exams-detail.component.ts @@ -8,4 +8,20 @@ import { Component, Input, Output, EventEmitter } from '@angular/core'; export class ExamsDetailComponent { @Input() examDetail:any; + students = [ + { + name: "Bright Musa", + department: "Inland Security", + matric_number: "123456", + submissions: "" + } + ] + + tableHeader = ['Name', 'Department', 'Matric Number', 'Score', 'Status'] + + goBack() { + window.history.back(); + } + + } diff --git a/src/app/shared/exams/exams.component.html b/src/app/shared/exams/exams.component.html index d7f8bb5..53c9492 100644 --- a/src/app/shared/exams/exams.component.html +++ b/src/app/shared/exams/exams.component.html @@ -1,6 +1,188 @@ -
+
+
+

+ Exam Results +

+
+ +
+
+
+
+

+ {{exam.code || 'ELE 321'}} +

+

+ {{exam.course || 'Introduction to Computer Science'}} +

+
+
+
+ {{exam.unit}} +
+
+
+ +
+

Lecturer-in-charge:

+

{{exam.lecturer || 'Prof Aiyede'}}

+
+

+ + Passing Percentage: + + {{exam.passing_percentage}} +

+ +

+ + Scored Percentage + + {{exam.scored_percentage}} +

+ + +
+
+ View Details +
+
+ + +

Result declared on: 2nd March, 2024

+ +
+
+
+

+ {{exam.code || 'ELE 321'}} +

+

+ {{exam.course || 'Introduction to Computer Science'}} +

+
+
+
+ {{exam.unit}} +
+
+
+ +
+

Lecturer-in-charge:

+

{{exam.lecturer || 'Prof Aiyede'}}

+
+

+ + Passing Percentage: + + {{exam.passing_percentage}} +

+ +

+ + Scored Percentage + + {{exam.scored_percentage}} +

+

+ + Status + + + {{ exam.scored_percentage < exam.passing_percentage ? 'Failed' : 'Passed' }} + +

+ + +
+
+ + Question Paper + + + +
+
+
+
+
+
+
+
+
+
+ + +
+
+
+

+ My Courses + + {{exams.length}} + +

+

These are the Courses you are teaching

+
+ + +
+ +
+
+
+
+

+ {{exam.code || 'ELE 321'}} +

+

+ {{exam.course || 'Introduction to Computer Science'}} +

+
+
+
+ {{exam.unit}} +
+
+
+ +
+

Videos:

+

{{exam.video || '22 videos'}}

+
+

+ + Students: + + {{exam.students_no || '100'}} +

+ + + + +
+
+ Upload Results +
+
+ +
+
+
+
+
+
+ + + - + -
+ + + diff --git a/src/app/shared/exams/exams.component.ts b/src/app/shared/exams/exams.component.ts index d30a4df..574b7f9 100644 --- a/src/app/shared/exams/exams.component.ts +++ b/src/app/shared/exams/exams.component.ts @@ -1,41 +1,57 @@ import { Component, Input, Output, EventEmitter } from '@angular/core'; import { HttpServiceService } from '../../services/http-service.service'; - +import { Router } from '@angular/router'; +import { DialogModule } from 'primeng/dialog'; +import { ButtonModule } from 'primeng/button'; +import { InputTextModule } from 'primeng/inputtext'; @Component({ selector: 'app-exams', templateUrl: './exams.component.html', styleUrl: './exams.component.scss' }) export class ExamsComponent { + + visible: boolean = false; + + showDialog() { + this.visible = true; + } viewDropOut:boolean = false; examDetail:any; @Input() studentId:any; @Input() exams:any; @Input() examsId:any; + @Input() viewer!:string; - constructor(private api:HttpServiceService){} + constructor(private api:HttpServiceService, private router: Router){} ngOnInit(){ } + - getStudentExamsResult(studentId:any){ - this.api.get(`students/exams/results?exam_id=${this.examsId}&student_id=${studentId}`).subscribe( - res=>{ - this.examDetail = res; - console.log('exams detail', this.examDetail) + // getStudentExamsResult(studentId:any){ - }, err=>{ - console.log(err) - } - ) - } + // this.api.get(`students/exams/results?exam_id=${this.examsId}&student_id=${studentId}`).subscribe( + // res=>{ + // this.examDetail = res; + // console.log('exams detail', this.examDetail) + + // }, err=>{ + // console.log(err) + // } + // ) + // } + + // toggleViewDropOut(id:any) { + // this.viewDropOut =!this.viewDropOut; + // this.examsId = id; + // this.getStudentExamsResult(id); + // } - toggleViewDropOut(id:any) { - this.viewDropOut =!this.viewDropOut; - this.examsId = id; - this.getStudentExamsResult(id); + route(page:string){ + this.router.navigate([page]); } } diff --git a/src/app/shared/footer/footer.component.html b/src/app/shared/footer/footer.component.html index a023b61..b8b9c30 100644 --- a/src/app/shared/footer/footer.component.html +++ b/src/app/shared/footer/footer.component.html @@ -1,10 +1,10 @@ -