From b7df19e1c0b6acda0852375464cafcfb6f5d552b Mon Sep 17 00:00:00 2001 From: MiharyR <60790872+MiharyR@users.noreply.github.com> Date: Tue, 21 Dec 2021 13:34:22 +0100 Subject: [PATCH] Delete userAndAdvertiser directory --- userAndAdvertiser/.browserslistrc | 17 - userAndAdvertiser/.editorconfig | 16 - userAndAdvertiser/.gitignore | 45 --- userAndAdvertiser/README.md | 27 -- userAndAdvertiser/angular.json | 113 ------- userAndAdvertiser/karma.conf.js | 44 --- userAndAdvertiser/package.json | 45 --- .../drag-and-drop.component.html | 33 -- .../drag-and-drop.component.scss | 135 -------- .../drag-and-drop.component.spec.ts | 25 -- .../drag-and-drop/drag-and-drop.component.ts | 93 ------ .../input-interests-ad.component.html | 43 --- .../input-interests-ad.component.scss | 16 - .../input-interests-ad.component.spec.ts | 25 -- .../input-interests-ad.component.ts | 121 ------- .../page-ad-list-advertiser.component.html | 185 ----------- .../page-ad-list-advertiser.component.scss | 87 ----- .../page-ad-list-advertiser.component.spec.ts | 25 -- .../page-ad-list-advertiser.component.ts | 304 ------------------ .../popup-add-or-update-ad.component.html | 83 ----- .../popup-add-or-update-ad.component.scss | 90 ------ .../popup-add-or-update-ad.component.spec.ts | 25 -- .../popup-add-or-update-ad.component.ts | 220 ------------- .../popup-delete-ad-advertiser.component.html | 8 - .../popup-delete-ad-advertiser.component.scss | 0 ...pup-delete-ad-advertiser.component.spec.ts | 25 -- .../popup-delete-ad-advertiser.component.ts | 47 --- ...pup-visualize-ad-advertiser.component.html | 71 ---- ...pup-visualize-ad-advertiser.component.scss | 28 -- ...-visualize-ad-advertiser.component.spec.ts | 25 -- ...popup-visualize-ad-advertiser.component.ts | 26 -- ...visualize-images-advertiser.component.html | 20 -- ...visualize-images-advertiser.component.scss | 14 - ...ualize-images-advertiser.component.spec.ts | 25 -- ...p-visualize-images-advertiser.component.ts | 38 --- .../page-profil-advertiser.component.html | 49 --- .../page-profil-advertiser.component.scss | 61 ---- .../page-profil-advertiser.component.spec.ts | 25 -- .../page-profil-advertiser.component.ts | 89 ----- .../popup-update-advertiser.component.html | 65 ---- .../popup-update-advertiser.component.scss | 33 -- .../popup-update-advertiser.component.spec.ts | 25 -- .../popup-update-advertiser.component.ts | 124 ------- .../pages-popularity.component.html | 94 ------ .../pages-popularity.component.scss | 53 --- .../pages-popularity.component.spec.ts | 25 -- .../pages-popularity.component.ts | 304 ------------------ .../drag-and-drop.directive.spec.ts | 8 - .../dragAndDrop/drag-and-drop.directive.ts | 36 --- .../navbar-advertiser.component.html | 41 --- .../navbar-advertiser.component.scss | 80 ----- .../navbar-advertiser.component.spec.ts | 25 -- .../navbar-advertiser.component.ts | 41 --- .../src/app/app-routing.module.ts | 41 --- userAndAdvertiser/src/app/app.component.html | 2 - userAndAdvertiser/src/app/app.component.scss | 24 -- .../src/app/app.component.spec.ts | 35 -- userAndAdvertiser/src/app/app.component.ts | 10 - userAndAdvertiser/src/app/app.module.ts | 131 -------- .../page-login/page-login.component.html | 36 --- .../page-login/page-login.component.scss | 271 ---------------- .../page-login/page-login.component.spec.ts | 25 -- .../login/page-login/page-login.component.ts | 101 ------ .../popup-forgotten-password.component.html | 24 -- .../popup-forgotten-password.component.scss | 12 - ...popup-forgotten-password.component.spec.ts | 25 -- .../popup-forgotten-password.component.ts | 47 --- .../input-interests-register.component.html | 43 --- .../input-interests-register.component.scss | 0 ...input-interests-register.component.spec.ts | 25 -- .../input-interests-register.component.ts | 121 ------- .../page-register.component.html | 162 ---------- .../page-register.component.scss | 47 --- .../page-register.component.spec.ts | 25 -- .../page-register/page-register.component.ts | 134 -------- .../popup-confirmation.component.html | 11 - .../popup-confirmation.component.scss | 7 - .../popup-confirmation.component.spec.ts | 25 -- .../popup-confirmation.component.ts | 13 - .../navbar-before-connexion.component.html | 40 --- .../navbar-before-connexion.component.scss | 79 ----- .../navbar-before-connexion.component.spec.ts | 25 -- .../navbar-before-connexion.component.ts | 11 - .../page-history-user.component.html | 70 ---- .../page-history-user.component.scss | 46 --- .../page-history-user.component.spec.ts | 25 -- .../page-history-user.component.ts | 113 ------- .../page-my-playlists.component.html | 35 -- .../page-my-playlists.component.scss | 48 --- .../page-my-playlists.component.spec.ts | 25 -- .../page-my-playlists.component.ts | 68 ---- .../playlist-list.component.html | 48 --- .../playlist-list.component.scss | 94 ------ .../playlist-list.component.spec.ts | 25 -- .../playlist-list/playlist-list.component.ts | 161 ---------- ...p-create-or-update-playlist.component.html | 19 -- ...p-create-or-update-playlist.component.scss | 0 ...reate-or-update-playlist.component.spec.ts | 25 -- ...pup-create-or-update-playlist.component.ts | 90 ------ .../popup-delete-playlist.component.html | 8 - .../popup-delete-playlist.component.scss | 0 .../popup-delete-playlist.component.spec.ts | 25 -- .../popup-delete-playlist.component.ts | 41 --- .../video-list/video-list.component.html | 91 ------ .../video-list/video-list.component.scss | 83 ----- .../video-list/video-list.component.spec.ts | 25 -- .../video-list/video-list.component.ts | 92 ------ .../input-interests-profil.component.html | 39 --- .../input-interests-profil.component.scss | 20 -- .../input-interests-profil.component.spec.ts | 25 -- .../input-interests-profil.component.ts | 121 ------- .../page-profil-user.component.html | 92 ------ .../page-profil-user.component.scss | 80 ----- .../page-profil-user.component.spec.ts | 25 -- .../page-profil-user.component.ts | 89 ----- .../popup-update-user.component.html | 125 ------- .../popup-update-user.component.scss | 81 ----- .../popup-update-user.component.spec.ts | 25 -- .../popup-update-user.component.ts | 132 -------- .../page-search/page-search.component.html | 80 ----- .../page-search/page-search.component.scss | 90 ------ .../page-search/page-search.component.spec.ts | 25 -- .../page-search/page-search.component.ts | 118 ------- .../video-grid/video-grid.component.html | 76 ----- .../video-grid/video-grid.component.scss | 84 ----- .../video-grid/video-grid.component.spec.ts | 25 -- .../search/video-grid/video-grid.component.ts | 128 -------- .../components/advert/advert.component.html | 26 -- .../components/advert/advert.component.scss | 41 --- .../advert/advert.component.spec.ts | 25 -- .../components/advert/advert.component.ts | 40 --- .../navbar-user/navbar-user.component.html | 41 --- .../navbar-user/navbar-user.component.scss | 80 ----- .../navbar-user/navbar-user.component.spec.ts | 25 -- .../navbar-user/navbar-user.component.ts | 41 --- ...opup-add-video-to-playlists.component.html | 42 --- ...opup-add-video-to-playlists.component.scss | 39 --- ...p-add-video-to-playlists.component.spec.ts | 25 -- .../popup-add-video-to-playlists.component.ts | 141 -------- .../add-video-to-playlists.service.spec.ts | 16 - .../add-video-to-playlists.service.ts | 100 ------ .../page-watching-video.component.html | 233 -------------- .../page-watching-video.component.scss | 159 --------- .../page-watching-video.component.spec.ts | 25 -- .../page-watching-video.component.ts | 258 --------------- .../app/utils/message/message.service.spec.ts | 16 - .../src/app/utils/message/message.service.ts | 38 --- .../app/utils/profil/profil.service.spec.ts | 16 - .../src/app/utils/profil/profil.service.ts | 29 -- .../src/app/utils/theme/theme.service.spec.ts | 16 - .../src/app/utils/theme/theme.service.ts | 17 - userAndAdvertiser/src/assets/.gitkeep | 0 .../src/assets/darkBackground.webp | Bin 712 -> 0 bytes .../src/assets/lightBackground.jpg | Bin 5902 -> 0 bytes userAndAdvertiser/src/assets/logo.png | Bin 5798 -> 0 bytes .../assets/logo_plateforms/dailymotion.png | Bin 6478 -> 0 bytes .../src/assets/logo_plateforms/youtube.png | Bin 7858 -> 0 bytes userAndAdvertiser/src/assets/play.png | Bin 3586 -> 0 bytes userAndAdvertiser/src/assets/profil.png | Bin 18287 -> 0 bytes userAndAdvertiser/src/assets/uploadFile.png | Bin 8853 -> 0 bytes .../src/environments/environment.prod.ts | 4 - .../src/environments/environment.ts | 17 - userAndAdvertiser/src/favicon.ico | Bin 948 -> 0 bytes userAndAdvertiser/src/index.html | 13 - userAndAdvertiser/src/main.ts | 12 - userAndAdvertiser/src/polyfills.ts | 65 ---- userAndAdvertiser/src/styles.scss | 1 - userAndAdvertiser/src/test.ts | 27 -- userAndAdvertiser/tsconfig.app.json | 15 - userAndAdvertiser/tsconfig.json | 23 -- userAndAdvertiser/tsconfig.spec.json | 18 -- 171 files changed, 9295 deletions(-) delete mode 100644 userAndAdvertiser/.browserslistrc delete mode 100644 userAndAdvertiser/.editorconfig delete mode 100644 userAndAdvertiser/.gitignore delete mode 100644 userAndAdvertiser/README.md delete mode 100644 userAndAdvertiser/angular.json delete mode 100644 userAndAdvertiser/karma.conf.js delete mode 100644 userAndAdvertiser/package.json delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/drag-and-drop/drag-and-drop.component.html delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/drag-and-drop/drag-and-drop.component.scss delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/drag-and-drop/drag-and-drop.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/drag-and-drop/drag-and-drop.component.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.html delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.scss delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.html delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.scss delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.html delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.scss delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/popup-delete-ad-advertiser/popup-delete-ad-advertiser.component.html delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/popup-delete-ad-advertiser/popup-delete-ad-advertiser.component.scss delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/popup-delete-ad-advertiser/popup-delete-ad-advertiser.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/popup-delete-ad-advertiser/popup-delete-ad-advertiser.component.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/popup-visualize-ad-advertiser/popup-visualize-ad-advertiser.component.html delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/popup-visualize-ad-advertiser/popup-visualize-ad-advertiser.component.scss delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/popup-visualize-ad-advertiser/popup-visualize-ad-advertiser.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/popup-visualize-ad-advertiser/popup-visualize-ad-advertiser.component.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/popup-visualize-images-advertiser/popup-visualize-images-advertiser.component.html delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/popup-visualize-images-advertiser/popup-visualize-images-advertiser.component.scss delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/popup-visualize-images-advertiser/popup-visualize-images-advertiser.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/adList/popup-visualize-images-advertiser/popup-visualize-images-advertiser.component.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/myProfil/page-profil-advertiser/page-profil-advertiser.component.html delete mode 100644 userAndAdvertiser/src/app/advertiser/myProfil/page-profil-advertiser/page-profil-advertiser.component.scss delete mode 100644 userAndAdvertiser/src/app/advertiser/myProfil/page-profil-advertiser/page-profil-advertiser.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/myProfil/page-profil-advertiser/page-profil-advertiser.component.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.html delete mode 100644 userAndAdvertiser/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.scss delete mode 100644 userAndAdvertiser/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/pages-popularity/pages-popularity.component.html delete mode 100644 userAndAdvertiser/src/app/advertiser/pages-popularity/pages-popularity.component.scss delete mode 100644 userAndAdvertiser/src/app/advertiser/pages-popularity/pages-popularity.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/pages-popularity/pages-popularity.component.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/utils/dragAndDrop/drag-and-drop.directive.spec.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/utils/dragAndDrop/drag-and-drop.directive.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/utils/navbar-advertiser/navbar-advertiser.component.html delete mode 100644 userAndAdvertiser/src/app/advertiser/utils/navbar-advertiser/navbar-advertiser.component.scss delete mode 100644 userAndAdvertiser/src/app/advertiser/utils/navbar-advertiser/navbar-advertiser.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/advertiser/utils/navbar-advertiser/navbar-advertiser.component.ts delete mode 100644 userAndAdvertiser/src/app/app-routing.module.ts delete mode 100644 userAndAdvertiser/src/app/app.component.html delete mode 100644 userAndAdvertiser/src/app/app.component.scss delete mode 100644 userAndAdvertiser/src/app/app.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/app.component.ts delete mode 100644 userAndAdvertiser/src/app/app.module.ts delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/login/page-login/page-login.component.html delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/login/page-login/page-login.component.scss delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/login/page-login/page-login.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/login/page-login/page-login.component.ts delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.html delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.scss delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.ts delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.html delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.scss delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.ts delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/register/page-register/page-register.component.html delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/register/page-register/page-register.component.scss delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/register/page-register/page-register.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/register/page-register/page-register.component.ts delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.html delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.scss delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.ts delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.html delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.scss delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.ts delete mode 100644 userAndAdvertiser/src/app/user/history/page-history-user/page-history-user.component.html delete mode 100644 userAndAdvertiser/src/app/user/history/page-history-user/page-history-user.component.scss delete mode 100644 userAndAdvertiser/src/app/user/history/page-history-user/page-history-user.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/user/history/page-history-user/page-history-user.component.ts delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/page-my-playlists/page-my-playlists.component.html delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/page-my-playlists/page-my-playlists.component.scss delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/page-my-playlists/page-my-playlists.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/page-my-playlists/page-my-playlists.component.ts delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/playlist-list/playlist-list.component.html delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/playlist-list/playlist-list.component.scss delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/playlist-list/playlist-list.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/playlist-list/playlist-list.component.ts delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/popup-create-or-update-playlist/popup-create-or-update-playlist.component.html delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/popup-create-or-update-playlist/popup-create-or-update-playlist.component.scss delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/popup-create-or-update-playlist/popup-create-or-update-playlist.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/popup-create-or-update-playlist/popup-create-or-update-playlist.component.ts delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/popup-delete-playlist/popup-delete-playlist.component.html delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/popup-delete-playlist/popup-delete-playlist.component.scss delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/popup-delete-playlist/popup-delete-playlist.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/popup-delete-playlist/popup-delete-playlist.component.ts delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/video-list/video-list.component.html delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/video-list/video-list.component.scss delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/video-list/video-list.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/user/myPlaylists/video-list/video-list.component.ts delete mode 100644 userAndAdvertiser/src/app/user/myProfil/input-interests-profil/input-interests-profil.component.html delete mode 100644 userAndAdvertiser/src/app/user/myProfil/input-interests-profil/input-interests-profil.component.scss delete mode 100644 userAndAdvertiser/src/app/user/myProfil/input-interests-profil/input-interests-profil.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/user/myProfil/input-interests-profil/input-interests-profil.component.ts delete mode 100644 userAndAdvertiser/src/app/user/myProfil/page-profil-user/page-profil-user.component.html delete mode 100644 userAndAdvertiser/src/app/user/myProfil/page-profil-user/page-profil-user.component.scss delete mode 100644 userAndAdvertiser/src/app/user/myProfil/page-profil-user/page-profil-user.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/user/myProfil/page-profil-user/page-profil-user.component.ts delete mode 100644 userAndAdvertiser/src/app/user/myProfil/popup-update-user/popup-update-user.component.html delete mode 100644 userAndAdvertiser/src/app/user/myProfil/popup-update-user/popup-update-user.component.scss delete mode 100644 userAndAdvertiser/src/app/user/myProfil/popup-update-user/popup-update-user.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/user/myProfil/popup-update-user/popup-update-user.component.ts delete mode 100644 userAndAdvertiser/src/app/user/search/page-search/page-search.component.html delete mode 100644 userAndAdvertiser/src/app/user/search/page-search/page-search.component.scss delete mode 100644 userAndAdvertiser/src/app/user/search/page-search/page-search.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/user/search/page-search/page-search.component.ts delete mode 100644 userAndAdvertiser/src/app/user/search/video-grid/video-grid.component.html delete mode 100644 userAndAdvertiser/src/app/user/search/video-grid/video-grid.component.scss delete mode 100644 userAndAdvertiser/src/app/user/search/video-grid/video-grid.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/user/search/video-grid/video-grid.component.ts delete mode 100644 userAndAdvertiser/src/app/user/utils/components/advert/advert.component.html delete mode 100644 userAndAdvertiser/src/app/user/utils/components/advert/advert.component.scss delete mode 100644 userAndAdvertiser/src/app/user/utils/components/advert/advert.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/user/utils/components/advert/advert.component.ts delete mode 100644 userAndAdvertiser/src/app/user/utils/components/navbar-user/navbar-user.component.html delete mode 100644 userAndAdvertiser/src/app/user/utils/components/navbar-user/navbar-user.component.scss delete mode 100644 userAndAdvertiser/src/app/user/utils/components/navbar-user/navbar-user.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/user/utils/components/navbar-user/navbar-user.component.ts delete mode 100644 userAndAdvertiser/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.html delete mode 100644 userAndAdvertiser/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.scss delete mode 100644 userAndAdvertiser/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.ts delete mode 100644 userAndAdvertiser/src/app/user/utils/services/addVideoToPlaylists/add-video-to-playlists.service.spec.ts delete mode 100644 userAndAdvertiser/src/app/user/utils/services/addVideoToPlaylists/add-video-to-playlists.service.ts delete mode 100644 userAndAdvertiser/src/app/user/watching/page-watching-video/page-watching-video.component.html delete mode 100644 userAndAdvertiser/src/app/user/watching/page-watching-video/page-watching-video.component.scss delete mode 100644 userAndAdvertiser/src/app/user/watching/page-watching-video/page-watching-video.component.spec.ts delete mode 100644 userAndAdvertiser/src/app/user/watching/page-watching-video/page-watching-video.component.ts delete mode 100644 userAndAdvertiser/src/app/utils/message/message.service.spec.ts delete mode 100644 userAndAdvertiser/src/app/utils/message/message.service.ts delete mode 100644 userAndAdvertiser/src/app/utils/profil/profil.service.spec.ts delete mode 100644 userAndAdvertiser/src/app/utils/profil/profil.service.ts delete mode 100644 userAndAdvertiser/src/app/utils/theme/theme.service.spec.ts delete mode 100644 userAndAdvertiser/src/app/utils/theme/theme.service.ts delete mode 100644 userAndAdvertiser/src/assets/.gitkeep delete mode 100644 userAndAdvertiser/src/assets/darkBackground.webp delete mode 100644 userAndAdvertiser/src/assets/lightBackground.jpg delete mode 100644 userAndAdvertiser/src/assets/logo.png delete mode 100644 userAndAdvertiser/src/assets/logo_plateforms/dailymotion.png delete mode 100644 userAndAdvertiser/src/assets/logo_plateforms/youtube.png delete mode 100644 userAndAdvertiser/src/assets/play.png delete mode 100644 userAndAdvertiser/src/assets/profil.png delete mode 100644 userAndAdvertiser/src/assets/uploadFile.png delete mode 100644 userAndAdvertiser/src/environments/environment.prod.ts delete mode 100644 userAndAdvertiser/src/environments/environment.ts delete mode 100644 userAndAdvertiser/src/favicon.ico delete mode 100644 userAndAdvertiser/src/index.html delete mode 100644 userAndAdvertiser/src/main.ts delete mode 100644 userAndAdvertiser/src/polyfills.ts delete mode 100644 userAndAdvertiser/src/styles.scss delete mode 100644 userAndAdvertiser/src/test.ts delete mode 100644 userAndAdvertiser/tsconfig.app.json delete mode 100644 userAndAdvertiser/tsconfig.json delete mode 100644 userAndAdvertiser/tsconfig.spec.json diff --git a/userAndAdvertiser/.browserslistrc b/userAndAdvertiser/.browserslistrc deleted file mode 100644 index 427441d..0000000 --- a/userAndAdvertiser/.browserslistrc +++ /dev/null @@ -1,17 +0,0 @@ -# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. -# For additional information regarding the format and rule options, please see: -# https://github.com/browserslist/browserslist#queries - -# For the full list of supported browsers by the Angular framework, please see: -# https://angular.io/guide/browser-support - -# You can see what browsers were selected by your queries by running: -# npx browserslist - -last 1 Chrome version -last 1 Firefox version -last 2 Edge major versions -last 2 Safari major versions -last 2 iOS major versions -Firefox ESR -not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line. diff --git a/userAndAdvertiser/.editorconfig b/userAndAdvertiser/.editorconfig deleted file mode 100644 index 59d9a3a..0000000 --- a/userAndAdvertiser/.editorconfig +++ /dev/null @@ -1,16 +0,0 @@ -# Editor configuration, see https://editorconfig.org -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -insert_final_newline = true -trim_trailing_whitespace = true - -[*.ts] -quote_type = single - -[*.md] -max_line_length = off -trim_trailing_whitespace = false diff --git a/userAndAdvertiser/.gitignore b/userAndAdvertiser/.gitignore deleted file mode 100644 index de51f68..0000000 --- a/userAndAdvertiser/.gitignore +++ /dev/null @@ -1,45 +0,0 @@ -# See http://help.github.com/ignore-files/ for more about ignoring files. - -# compiled output -/dist -/tmp -/out-tsc -# Only exists if Bazel was run -/bazel-out - -# dependencies -/node_modules - -# profiling files -chrome-profiler-events*.json - -# IDEs and editors -/.idea -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace - -# IDE - VSCode -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -.history/* - -# misc -/.sass-cache -/connect.lock -/coverage -/libpeerconnection.log -npm-debug.log -yarn-error.log -testem.log -/typings - -# System Files -.DS_Store -Thumbs.db diff --git a/userAndAdvertiser/README.md b/userAndAdvertiser/README.md deleted file mode 100644 index d2ab4a3..0000000 --- a/userAndAdvertiser/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# UserAndAdvertiser - -This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.14. - -## Development server - -Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. - -## Code scaffolding - -Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. - -## Build - -Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. - -## Running unit tests - -Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). - -## Running end-to-end tests - -Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. - -## Further help - -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. diff --git a/userAndAdvertiser/angular.json b/userAndAdvertiser/angular.json deleted file mode 100644 index 5e25aaf..0000000 --- a/userAndAdvertiser/angular.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": "projects", - "projects": { - "userAndAdvertiser": { - "projectType": "application", - "schematics": { - "@schematics/angular:component": { - "style": "scss" - }, - "@schematics/angular:application": { - "strict": true - } - }, - "root": "", - "sourceRoot": "src", - "prefix": "app", - "architect": { - "build": { - "builder": "@angular-devkit/build-angular:browser", - "options": { - "outputPath": "dist/userAndAdvertiser", - "index": "src/index.html", - "main": "src/main.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.app.json", - "inlineStyleLanguage": "scss", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", - "src/styles.scss", - "node_modules/bootstrap/scss/bootstrap.scss" - ], - "scripts": [] - }, - "configurations": { - "production": { - "budgets": [ - { - "type": "initial", - "maximumWarning": "500kb", - "maximumError": "1mb" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "2kb", - "maximumError": "4kb" - } - ], - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" - } - ], - "outputHashing": "all" - }, - "development": { - "buildOptimizer": false, - "optimization": false, - "vendorChunk": true, - "extractLicenses": false, - "sourceMap": true, - "namedChunks": true - } - }, - "defaultConfiguration": "production" - }, - "serve": { - "builder": "@angular-devkit/build-angular:dev-server", - "configurations": { - "production": { - "browserTarget": "userAndAdvertiser:build:production" - }, - "development": { - "browserTarget": "userAndAdvertiser:build:development" - } - }, - "defaultConfiguration": "development" - }, - "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", - "options": { - "browserTarget": "userAndAdvertiser:build" - } - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "main": "src/test.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.spec.json", - "karmaConfig": "karma.conf.js", - "inlineStyleLanguage": "scss", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "src/styles.scss" - ], - "scripts": [] - } - } - } - } - }, - "defaultProject": "userAndAdvertiser" -} diff --git a/userAndAdvertiser/karma.conf.js b/userAndAdvertiser/karma.conf.js deleted file mode 100644 index e82c4ac..0000000 --- a/userAndAdvertiser/karma.conf.js +++ /dev/null @@ -1,44 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - jasmine: { - // you can add configuration options for Jasmine here - // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html - // for example, you can disable the random execution with `random: false` - // or set a specific seed with `seed: 4321` - }, - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - jasmineHtmlReporter: { - suppressAll: true // removes the duplicated traces - }, - coverageReporter: { - dir: require('path').join(__dirname, './coverage/userAndAdvertiser'), - subdir: '.', - reporters: [ - { type: 'html' }, - { type: 'text-summary' } - ] - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/userAndAdvertiser/package.json b/userAndAdvertiser/package.json deleted file mode 100644 index f5a3d69..0000000 --- a/userAndAdvertiser/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "user-and-advertiser", - "version": "0.0.0", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "watch": "ng build --watch --configuration development", - "test": "ng test" - }, - "private": true, - "dependencies": { - "@angular/animations": "~12.2.0", - "@angular/cdk": "^13.1.1", - "@angular/common": "~12.2.0", - "@angular/compiler": "~12.2.0", - "@angular/core": "~12.2.0", - "@angular/forms": "~12.2.0", - "@angular/material": "^13.1.1", - "@angular/platform-browser": "~12.2.0", - "@angular/platform-browser-dynamic": "~12.2.0", - "@angular/router": "~12.2.0", - "bootstrap": "^5.1.3", - "jquery": "^3.6.0", - "ng2-charts": "^2.2.3", - "popper": "^1.0.1", - "rxjs": "~6.6.0", - "tslib": "^2.3.0", - "zone.js": "~0.11.4" - }, - "devDependencies": { - "@angular-devkit/build-angular": "~12.2.14", - "@angular/cli": "~12.2.14", - "@angular/compiler-cli": "~12.2.0", - "@types/jasmine": "~3.8.0", - "@types/node": "^12.11.1", - "jasmine-core": "~3.8.0", - "karma": "~6.3.0", - "karma-chrome-launcher": "~3.1.0", - "karma-coverage": "~2.0.3", - "karma-jasmine": "~4.0.0", - "karma-jasmine-html-reporter": "~1.7.0", - "typescript": "~4.3.5" - } -} diff --git a/userAndAdvertiser/src/app/advertiser/adList/drag-and-drop/drag-and-drop.component.html b/userAndAdvertiser/src/app/advertiser/adList/drag-and-drop/drag-and-drop.component.html deleted file mode 100644 index ba7dc4f..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/drag-and-drop/drag-and-drop.component.html +++ /dev/null @@ -1,33 +0,0 @@ -
- -
Images
- -
Glisser déposer
-
ou
-
Cliquer pour selectionner
-
- -
- info -
- -
-
- file -
-

- {{ file?.name }} -

-

- {{ formatBytes(file?.size) }} -

-
-
-
-
-
- -
-
diff --git a/userAndAdvertiser/src/app/advertiser/adList/drag-and-drop/drag-and-drop.component.scss b/userAndAdvertiser/src/app/advertiser/adList/drag-and-drop/drag-and-drop.component.scss deleted file mode 100644 index 91899f6..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/drag-and-drop/drag-and-drop.component.scss +++ /dev/null @@ -1,135 +0,0 @@ -.container { - width: 450px; - height: 180px; - padding: 20px 0px 20px 0px; - text-align: center; - border: dashed 1px #979797; - position: relative; - margin: 0 auto; -} - -input { - opacity: 0; - position: absolute; - z-index: 2; - width: 100%; - height: 100%; - top: 0; - left: 0; -} - - -.fileover { - animation: shake 1s; - animation-iteration-count: infinite; -} - -.files-list { - margin-top: 1.5rem; - - .single-file { - display: flex; - padding: 0.5rem; - justify-content: space-between; - align-items: center; - border: dashed 1px #979797; - margin-bottom: 1rem; - - img.delete { - margin-left: 0.5rem; - cursor: pointer; - align-self: flex-end; - } - - - display: flex; - flex-grow: 1; - - .name { - font-size: 14px; - font-weight: 500; - color: #353f4a; - margin: 0; - } - - .size { - font-size: 12px; - font-weight: 500; - color: #a4a4a4; - margin: 0; - margin-bottom: 0.25rem; - } - - .info { - width: 100% - } - } -} - -/* Shake animation */ -@keyframes shake { - 0% { - transform: translate(1px, 1px) rotate(0deg); - } - - 10% { - transform: translate(-1px, -2px) rotate(-1deg); - } - - 20% { - transform: translate(-3px, 0px) rotate(1deg); - } - - 30% { - transform: translate(3px, 2px) rotate(0deg); - } - - 40% { - transform: translate(1px, -1px) rotate(1deg); - } - - 50% { - transform: translate(-1px, 2px) rotate(-1deg); - } - - 60% { - transform: translate(-3px, 1px) rotate(0deg); - } - - 70% { - transform: translate(3px, 1px) rotate(-1deg); - } - - 80% { - transform: translate(-1px, -1px) rotate(1deg); - } - - 90% { - transform: translate(1px, 2px) rotate(0deg); - } - - 100% { - transform: translate(1px, -2px) rotate(-1deg); - } -} - - -.progress-cont { - height: 7px; - width: 100%; - border-radius: 4px; - background-color: #d0d0d0; - position: relative; - - .progress { - width: 0; - height: 100%; - position: absolute; - z-index: 1; - top: 0; - left: 0; - border-radius: 4px; - background-color: #4c97cb; - transition: 0.5s all; - } -} diff --git a/userAndAdvertiser/src/app/advertiser/adList/drag-and-drop/drag-and-drop.component.spec.ts b/userAndAdvertiser/src/app/advertiser/adList/drag-and-drop/drag-and-drop.component.spec.ts deleted file mode 100644 index e4666b0..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/drag-and-drop/drag-and-drop.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { DragAndDropComponent } from './drag-and-drop.component'; - -describe('DragAndDropComponent', () => { - let component: DragAndDropComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ DragAndDropComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(DragAndDropComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/advertiser/adList/drag-and-drop/drag-and-drop.component.ts b/userAndAdvertiser/src/app/advertiser/adList/drag-and-drop/drag-and-drop.component.ts deleted file mode 100644 index e626bef..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/drag-and-drop/drag-and-drop.component.ts +++ /dev/null @@ -1,93 +0,0 @@ -import {Component, ElementRef, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; - -@Component({ - selector: 'app-drag-and-drop', - templateUrl: './drag-and-drop.component.html', - styleUrls: ['./drag-and-drop.component.scss'] -}) -export class DragAndDropComponent -{ - @ViewChild("fileDropRef", { static: false }) fileDropEl: ElementRef; - info_image = "Vos annonces seront affichées dans un rectangle de rapport 1/5 avec: \n • 1 la largeur du rectangle \n • 5 la hauteur du rectangle" ; - files: any[] = []; - @Output() eventEmitter = new EventEmitter(); - - /** - * on file drop handler - */ - onFileDropped($event) { - this.prepareFilesList($event); - this.eventEmitter.emit(this.files); - } - - /** - * handle file from browsing - */ - fileBrowseHandler(files) { - this.prepareFilesList(files); - this.eventEmitter.emit(this.files); - } - - /** - * Delete file from files list - * @param index (File index) - */ - deleteFile(index: number) { - if (this.files[index].progress < 100) { - console.log("Upload in progress."); - return; - } - this.files.splice(index, 1); - this.eventEmitter.emit(this.files); - } - - /** - * Simulate the upload process - */ - uploadFilesSimulator(index: number) { - setTimeout(() => { - if (index === this.files.length) { - return; - } else { - const progressInterval = setInterval(() => { - if (this.files[index].progress === 100) { - clearInterval(progressInterval); - this.uploadFilesSimulator(index + 1); - } else { - this.files[index].progress += 5; - } - }, 200); - } - }, 1000); - } - - /** - * Convert Files list to normal array list - * @param files (Files List) - */ - prepareFilesList(files: Array) { - for (const item of files) { - item.progress = 0; - this.files.push(item); - } - this.fileDropEl.nativeElement.value = ""; - this.uploadFilesSimulator(0); - } - - /** - * format bytes - * @param bytes (File size in bytes) - * @param decimals (Decimals point) - */ - formatBytes(bytes, decimals = 2) { - if (bytes === 0) { - return "0 Bytes"; - } - const k = 1024; - const dm = decimals <= 0 ? 0 : decimals; - const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]; - const i = Math.floor(Math.log(bytes) / Math.log(k)); - return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i]; - } - -} diff --git a/userAndAdvertiser/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.html b/userAndAdvertiser/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.html deleted file mode 100644 index 6def6c2..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Sujets - - - - - - - {{interest}} - - - - - - - - - - - - {{interest}} - - - - - - diff --git a/userAndAdvertiser/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.scss b/userAndAdvertiser/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.scss deleted file mode 100644 index 2c3a84d..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.scss +++ /dev/null @@ -1,16 +0,0 @@ -mat-form-field { - width: 100%; - font-size: small; -} - -mat-chip-list { - font-size: small; -} - -mat-chip { - font-size: small; -} - -input { - font-size: small; -} diff --git a/userAndAdvertiser/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.spec.ts b/userAndAdvertiser/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.spec.ts deleted file mode 100644 index deae4d3..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { InputInterestsAdComponent } from './input-interests-ad.component'; - -describe('BarTagsComponent', () => { - let component: InputInterestsAdComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ InputInterestsAdComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(InputInterestsAdComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.ts b/userAndAdvertiser/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.ts deleted file mode 100644 index 7ae81aa..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/input-interests-ad/input-interests-ad.component.ts +++ /dev/null @@ -1,121 +0,0 @@ -import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core'; -import {COMMA, ENTER} from "@angular/cdk/keycodes"; -import {FormControl} from "@angular/forms"; -import {Observable} from "rxjs"; -import {map, startWith} from "rxjs/operators"; -import {MatChipInputEvent} from "@angular/material/chips"; -import {MatAutocompleteSelectedEvent} from "@angular/material/autocomplete"; -import {MessageService} from "../../../utils/message/message.service"; - - - -@Component({ - selector: 'app-input-interests-ad', - templateUrl: './input-interests-ad.component.html', - styleUrls: ['./input-interests-ad.component.scss'] -}) -export class InputInterestsAdComponent implements OnInit -{ - selectable = true; - removable = true; - separatorKeysCodes: number[] = [ENTER, COMMA]; - formControl = new FormControl(); - filteredInterests: Observable; - @Input() myInterests: string[] = []; - allInterests: string[] = []; - @Output() eventEmitter = new EventEmitter(); - @ViewChild('tagInput') tagInput: ElementRef; - interestsNotSelected: string[] = []; - - - constructor( private messageService: MessageService ) {} - - - ngOnInit(): void - { - this.filteredInterests = this.formControl.valueChanges.pipe( - startWith(null), - map((fruit: string | null) => fruit ? this._filter(fruit) : this.interestsNotSelected.slice())); - - this.messageService - .get("misc/getInterests") - .subscribe( retour => { - - if(retour.status !== "success") { - console.log(retour); - } - else { - this.allInterests = []; - for(let elt of retour.data) - { - this.allInterests.push(elt.interest); - this.interestsNotSelected.push(elt.interest); - } - } - }); - } - - - add(event: MatChipInputEvent): void - { - const value = (event.value || '').trim(); - const index = this.interestsNotSelected.indexOf(value); - if (value && (index !== -1) && (!this.myInterests.includes(value))) - { - this.myInterests.push(value); - event.chipInput!.clear(); - this.formControl.setValue(null); - this.eventEmitter.emit(this.myInterests); - this.interestsNotSelected.splice(index, 1); - } - } - - - remove(interest: string): void - { - // supprimer 'interest' de 'myInterest' - const index = this.myInterests.indexOf(interest); - if (index >= 0) this.myInterests.splice(index, 1); - this.eventEmitter.emit(this.myInterests); - - // remmettre 'interest' dans 'interestsNotSelected' - if(!this.interestsNotSelected.includes(interest)) - { - const indexOfAutres = this.interestsNotSelected.indexOf("Autres"); - if(indexOfAutres !== -1) - { - this.interestsNotSelected.splice(indexOfAutres, 1); - if(interest !== "Autres") this.interestsNotSelected.push(interest); - this.interestsNotSelected.sort(); - this.interestsNotSelected.push("Autres"); - } - else { - this.interestsNotSelected.push(interest); - if(interest !== "Autres") this.interestsNotSelected.sort(); - } - } - } - - - selected(event: MatAutocompleteSelectedEvent): void - { - const value = event.option.viewValue; - if(!this.myInterests.includes(value)) - { - this.myInterests.push(value); - const index = this.interestsNotSelected.indexOf(value); - this.interestsNotSelected.splice(index, 1); - } - this.tagInput.nativeElement.value = ''; - this.formControl.setValue(null); - this.eventEmitter.emit(this.myInterests); - } - - - private _filter(value: string): string[] - { - const filterValue = value.toLowerCase(); - return this.interestsNotSelected.filter(fruit => fruit.toLowerCase().includes(filterValue)); - } - -} diff --git a/userAndAdvertiser/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.html b/userAndAdvertiser/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.html deleted file mode 100644 index 78dd263..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.html +++ /dev/null @@ -1,185 +0,0 @@ -
-
- - - -

- - - - - - -
- - -
-
- - -
- Filtre -
- - - - -
- -
- - -
- - - -
- visible
- non visible -
- - - -
- - Sujets - - - {{formControlInterests.value ? formControlInterests.value[0] : ''}} - - (+{{formControlInterests.value.length - 1}} {{formControlInterests.value?.length === 2 ? 'autre' : 'autres'}}) - - - {{topping}} - - - -
- - - -
- Période de création:   - - Date de début - - -   -   - - Date de fin - - -
- -
- -
-
- - -
- -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- power_settings_new - - - Titre - {{advert.title}} - Sujets - - {{interest}}, - {{interest}} - - Date de création - {{ advert.createdAt | date:'dd/LL/YYYY à HH:mm:ss' }} - Dernière modification - {{ advert.updatedAt | date:'dd/LL/YYYY à HH:mm:ss' }} - Vues - {{advert.countViews}} - Actions - - - -
Aucune vidéo ne correspond au filtre: "{{input.value}}"
-
- -
-

- -
-
diff --git a/userAndAdvertiser/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.scss b/userAndAdvertiser/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.scss deleted file mode 100644 index 370e312..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.scss +++ /dev/null @@ -1,87 +0,0 @@ -.myContainer { - max-width: 100vw; - height: 100vh; - overflow-x: hidden; - font-size: small; -} - - -// ---------------------------------------------------------- - - -.filtersContainer { - width: 95%; - background-color: white; - padding: 10px 10px 10px 10px; -} - -.myRow { - margin-left: 1%; -} - -.textFilter { - width: 50%; - font-size: medium; - border-radius: 5px; -} - -.btnAjouter { - background-color: white; - border: solid 1px black; -} - - -// ---------------------------------------------------------- - - -table { - margin: 0 auto; - width: 94%; - font-size: small; -} -.darkTheme table { border: solid 2px white; } - -th.mat-sort-header-sorted { - color: black; -} - -td { - font-size: small; -} - -input { - width: 30%; - font-size: large; - border-radius: 5px; -} - - -// -------------------------------------------------------------------- - - -// rong gauche -::ng-deep .mat-slide-toggle-thumb { - background-color: white !important; -} - -// trait droite -::ng-deep .mat-slide-toggle-bar { - background-color: gray !important; -} - -// rond droite -::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-thumb { - background-color: white !important; -} - -// trait gauche -::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-bar { - background-color: cornflowerblue !important; -} - - -// ------------------------------------------------------------------------- - -::ng-deep .mat-pseudo-checkbox-checked { - background-color: black !important; -} diff --git a/userAndAdvertiser/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.spec.ts b/userAndAdvertiser/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.spec.ts deleted file mode 100644 index 9492c6c..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PageAdListAdvertiserComponent } from './page-ad-list-advertiser.component'; - -describe('PageAdvertiserComponent', () => { - let component: PageAdListAdvertiserComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PageAdListAdvertiserComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PageAdListAdvertiserComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.ts b/userAndAdvertiser/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.ts deleted file mode 100644 index 8797593..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component.ts +++ /dev/null @@ -1,304 +0,0 @@ -import {AfterViewInit, Component, OnInit, ViewChild} from '@angular/core'; -import {MatSort} from "@angular/material/sort"; -import {MatTableDataSource} from "@angular/material/table"; -import {MatDialog} from "@angular/material/dialog"; -import {PopupAddOrUpdateAdComponent} from "../popup-add-or-update-ad/popup-add-or-update-ad.component"; -import {MatSnackBar} from "@angular/material/snack-bar"; -import {PopupDeleteAdAdvertiserComponent} from "../popup-delete-ad-advertiser/popup-delete-ad-advertiser.component"; -import {MatPaginator} from "@angular/material/paginator"; -import {PopupVisualizeImagesAdvertiserComponent} from "../popup-visualize-images-advertiser/popup-visualize-images-advertiser.component"; -import {FormControl} from "@angular/forms"; -import {HttpParams} from "@angular/common/http"; -import {ThemeService} from "../../../utils/theme/theme.service"; -import {MessageService} from "../../../utils/message/message.service"; - - - -@Component({ - selector: 'app-page-ad-list-advertiser', - templateUrl: './page-ad-list-advertiser.component.html', - styleUrls: ['./page-ad-list-advertiser.component.scss'] -}) -export class PageAdListAdvertiserComponent implements AfterViewInit -{ - displayedColumns: string[] = [ 'isVisible', 'title', 'interests', 'createdAt', 'updatedAt', 'countViews', 'actions' ]; - tabAdvertWithCountViews: any[] = []; - dataSource; - @ViewChild(MatSort) sort: MatSort; - @ViewChild(MatPaginator) paginator: MatPaginator; - - visible: boolean = true; - noVisible: boolean = true; - startDate: Date = null; - endDate: Date = null; - formControlInterests = new FormControl(); - - allVideoCategorie = []; - allInterests: string[] = []; - - - constructor( public themeService: ThemeService, - public dialog: MatDialog, - private snackBar: MatSnackBar, - private messageService: MessageService ) { } - - - ngAfterViewInit(): void - { - // Ask interests - this.messageService - .get("misc/getInterests") - .subscribe(ret => this.afterReceivingInterests(ret), err => this.afterReceivingInterests(err) ); - - // Ask ads - let params = new HttpParams(); - params = params.append("isActive", true); - this.messageService - .get("ad/findAll", params) - .subscribe(ret => this.afterReceivingAds(ret), err => this.afterReceivingAds(err)); - } - - - afterReceivingInterests(retour: any): void - { - if(retour.status !== "success") { - console.log("afterReceivingInterests"); - console.log(retour); - } - else { - this.allVideoCategorie = retour.data; - this.allInterests = retour.data.map(x => x.interest); - this.allInterests.sort(); - } - } - - - afterReceivingAds(retour: any): void - { - if(retour.status !== "success") { - console.log(retour); - } - else { - if(retour.data.length !== 0) - { - for(let advert of retour.data) this.tabAdvertWithCountViews.push(this.advertToAdvertWithCountViews(advert)); - this.dataSource = new MatTableDataSource(); - this.onFilter(); - } - } - } - - - applyFilter(event: Event): void - { - const filterValue = (event.target as HTMLInputElement).value; - this.dataSource.filter = filterValue.trim().toLowerCase(); - } - - - onVisualizeImages(advert: any) - { - if(advert.images.length !== 0) - { - const config = { - width: '30%', - height: '90%', - data: { images: advert.images } - }; - this.dialog - .open(PopupVisualizeImagesAdvertiserComponent, config) - .afterClosed() - .subscribe(retour => {}); - } - else { - const config = { duration: 2000, panelClass: "custom-class" }; - const message = "Cette annonce ne contient aucune image" ; - this.snackBar.open( message, "", config); - } - } - - - onAdd(): void - { - const config = { - width: '75%', - //height: '80%', - panelClass: 'custom-dialog-container', - data: { - action: "add", - advert: null, - allVideoCategorie: this.allVideoCategorie, - allTitle: this.tabAdvertWithCountViews.map(x => x.title) - } - }; - this.dialog - .open(PopupAddOrUpdateAdComponent, config) - .afterClosed() - .subscribe( advertAdded => { - - const config = { duration: 1000, panelClass: "custom-class" }; - let message = "" ; - if((advertAdded === undefined) || (advertAdded === null)) { - message = "Opération annulée" ; - } - else { - this.tabAdvertWithCountViews.push(this.advertToAdvertWithCountViews(advertAdded)); - this.onFilter(); - message = "L'annonce a bien été ajoutée ✔" ; - } - this.snackBar.open( message, "", config); - }); - } - - - onUpdate(advertToUpdate: any): void - { - const config = { - width: '75%', - //height: '80%', - panelClass: 'custom-dialog-container', - data: { - action: "update", - advert: advertToUpdate, - allVideoCategorie: this.allVideoCategorie, - allTitle: this.tabAdvertWithCountViews.map(x => x.title) - } - }; - this.dialog - .open(PopupAddOrUpdateAdComponent, config) - .afterClosed() - .subscribe( advertUpdated => { - - const config = { duration: 1000, panelClass: "custom-class" }; - let message = "" ; - if((advertUpdated === undefined) || (advertUpdated === null)) { - message = "Opération annulée" ; - } - else { - const index = this.tabAdvertWithCountViews.findIndex(elt => (elt.id === advertToUpdate.id)); - this.tabAdvertWithCountViews.splice(index, 1, this.advertToAdvertWithCountViews(advertUpdated)); - this.onFilter(); - message = "L'annonce a bien été modifiée ✔" ; - } - this.snackBar.open( message, "", config); - }); - } - - - onDelete(advert: any): void - { - const config = { - data: { advert: advert } - }; - this.dialog - .open(PopupDeleteAdAdvertiserComponent, config) - .afterClosed() - .subscribe( retour => { - - const config = { duration: 1000, panelClass: "custom-class" }; - let message = "" ; - if((retour === undefined) || (retour === null)) { - message = "Opération annulée" ; - } - else { - const index = this.dataSource.data.findIndex( elt => (elt.id === advert.id)); - this.dataSource.data.splice(index, 1); - this.dataSource.data = this.dataSource.data; - this.dataSource = this.dataSource; - message = advert.title + " a bien été supprimée ✔" ; - } - this.snackBar.open( message, "", config); - }); - } - - - onFilter(): void - { - if(this.dataSource === null || this.dataSource === undefined) this.dataSource = new MatTableDataSource(); - this.dataSource.data = []; - for(let advert of this.tabAdvertWithCountViews) - { - let valide: boolean = true; - - if(advert.isVisible && this.visible) valide = true; - else if((!advert.isVisible) && this.noVisible) valide = true; - else valide = false; - - if(valide) - { - if ((advert.createdAt === null) && (this.startDate !== null)) valide = false; - else if ((advert.createdAt === null) && (this.endDate !== null)) valide = false; - else if (this.startDate !== null) - { - if(this.startDate.getTime() > advert.createdAt.getTime()) valide = false; - else if (this.endDate !== null) - { - if(this.endDate.getTime() < advert.createdAt.getTime()) valide = false; - } - } - } - - if(valide) { - if(this.formControlInterests.value !== null) { - for (let interest of this.formControlInterests.value) { - if (advert.interests.indexOf(interest) === -1) { - valide = false; - break; - } - } - } - } - - if(valide) this.dataSource.data.push(advert); - } - - this.dataSource = new MatTableDataSource(this.dataSource.data); - this.dataSource.sort = this.sort; - this.dataSource.paginator = this.paginator; - } - - - onNewStartDate(event): void { - this.startDate = new Date(event); - } - - onNewEndDate(event): void { - this.endDate = new Date(event); - } - - - onSliderIsVisible(advert: any): void - { - // il faut envoyer la négation de user.isActive - this.messageService - .put("ad/update/"+advert.id, { isVisible: !advert.isVisible }) - .subscribe( - ret => {}, - err => { - console.log("onSliderIsVisible"); - console.log(err); - } - ); - } - - - advertToAdvertWithCountViews(advert) - { - return { - id: advert.id, - userId: advert.userId, - title: advert.title, - url: advert.url, - images: advert.images, - interests: advert.interests.map(x => x.interest), - comment: advert.comment, - views: advert.views, - countViews: advert.views.length, - isVisible: advert.isVisible, - isActive: advert.isActive, - createdAt: advert.createdAt, - updatedAt: advert.updatedAt, - } - } - -} diff --git a/userAndAdvertiser/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.html b/userAndAdvertiser/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.html deleted file mode 100644 index e3b7986..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.html +++ /dev/null @@ -1,83 +0,0 @@ -
-
- - -

{{title}}

- - -
- - - -
- - -
- - - - Titre annonce - - - - - - - - - Commentaire - -
- - - - URL - -
- - - Visible

- - -
-
- Images déjà associées: -
-
-
- - {{image.description}} - - -
-
-
- -
- - -
- -
- -
- - -
- - -
- {{errorMessage}} -
- - - - - - - - -
-
diff --git a/userAndAdvertiser/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.scss b/userAndAdvertiser/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.scss deleted file mode 100644 index 3bb2eed..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.scss +++ /dev/null @@ -1,90 +0,0 @@ -.myContainer1 { - padding: 10px 10px 0px 25px; - margin: 0px 0px 0px 0px; - font-size: small; -} - - -.myContainer2 { - padding: 0px 0px 0px 0px; - margin: 0px 0px 0px 0px; - overflow-y: hidden; - overflow-x: hidden; - -ms-overflow-style: none; - scrollbar-width: none; -} -.myContainer2::-webkit-scrollbar { - display: none; -} - - - -h1 { - text-align: center; - font-size: large; -} - -.col-6, .col-8 { - border-left: solid 1px #a4a4a4; -} - - -// ------------------------------------------------------------------------- - -.titleContainer { - width: 100%; -} - -.commentContainer { - width: 100%; -} - -.imageContainer { - border: solid 1px grey; -} - -mat-dialog-actions { - margin-bottom: 0px; -} - -button { - font-size: small; -} - - -// ------------------------------------------------------------------------- -// --- LightTheme --- - -// aura -.lightTheme ::ng-deep .mat-checkbox-ripple .mat-ripple-element { - background-color: grey !important; -} - -// contenu coche -.lightTheme ::ng-deep .mat-checkbox-checked.mat-accent .mat-checkbox-background { - background-color: black !important; -} - -// indeterminate -.lightTheme ::ng-deep .mat-checkbox .mat-checkbox-frame { - border-color: black !important; - background-color: white !important; -} - -// --- DarkTheme --- - -// aura -.darTheme ::ng-deep .mat-checkbox-ripple .mat-ripple-element { - background-color: grey !important; -} - -// contenu coche -.darkTheme ::ng-deep .mat-checkbox-checked.mat-accent .mat-checkbox-background { - background-color: black !important; -} - -// indeterminate -.darkTheme ::ng-deep .mat-checkbox .mat-checkbox-frame { - border-color: white !important; - //background-color: white !important; -} diff --git a/userAndAdvertiser/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.spec.ts b/userAndAdvertiser/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.spec.ts deleted file mode 100644 index ba74952..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PopupAddOrUpdateAdComponent } from './popup-add-or-update-ad.component'; - -describe('PopupAddOrUpdateAdComponent', () => { - let component: PopupAddOrUpdateAdComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PopupAddOrUpdateAdComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PopupAddOrUpdateAdComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.ts b/userAndAdvertiser/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.ts deleted file mode 100644 index e927f68..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component.ts +++ /dev/null @@ -1,220 +0,0 @@ -import {Component, Inject, OnInit} from '@angular/core'; -import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog"; -import {MessageService} from "../../../utils/message/message.service"; -import {ThemeService} from "../../../utils/theme/theme.service"; - - - - -const ADVERT_VIDE = { - _id: "", - userId: "", - title: "", - url: "", - images: [], - interests: [], - comment: "", - views: [], - isVisible: true, - isActive: true, - createdAt: new Date(), - updatedAt: new Date(), -} - - -@Component({ - selector: 'app-popup-add-or-update-ad', - templateUrl: './popup-add-or-update-ad.component.html', - styleUrls: ['./popup-add-or-update-ad.component.scss'] -}) -export class PopupAddOrUpdateAdComponent implements OnInit -{ - advert: any; - title: string = "" ; - allVideoCategorie = []; - allTitle = []; - - tabOfNewImagesBase64 = []; - tabOfNewImagesName = []; - - hasError: boolean = false; - errorMessage: string = "" ; - - - - constructor( public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data, - private messageService: MessageService, - public themeService: ThemeService ) { } - - - ngOnInit(): void - { - this.allVideoCategorie = this.data.allVideoCategorie; - this.allTitle = this.data.allTitle.slice(); - if(this.data.action === "add") - { - this.advert = Object.assign({}, ADVERT_VIDE); - this.advert.images = []; - this.advert.interests = []; - this.title = "Ajouter annonce" ; - } - else - { - this.advert = Object.assign({}, this.data.advert); - this.advert.interests = this.data.advert.interests.slice(); - this.title = "Modifier annonce" ; - const indexOldTitle = this.allTitle.findIndex(title => title == this.advert.title); - this.allTitle.splice(indexOldTitle, 1); - } - } - - - onValidate(): void - { - this.checkField(); - if(!this.hasError) - { - // preparation des donnees - this.prepareAdvertInterests(); - this.prepareAdvertImages(); - - // si creation - if (this.data.action === "add") - { - this.messageService - .post("ad/create", this.advert) - .subscribe(ret => this.onCreateCallback(ret), err => this.onCreateCallback(err)); - } - // si update - else - { - const id = this.advert.id; - Reflect.deleteProperty(this.advert, "id"); - Reflect.deleteProperty(this.advert, "_id"); - this.messageService - .put("ad/update/" + id, this.advert) - .subscribe(ret => this.onUpdateCallback(ret, id), err => this.onUpdateCallback(err, id)); - } - } - } - - - checkField() - { - if(this.advert.title.length === 0) { - this.errorMessage = "Veuillez remplir le champ 'titre'." ; - this.hasError = true; - } - else if(this.allTitle.includes(this.advert.title)) { - this.errorMessage = "Ce titre est déjà pris." ; - this.hasError = true; - } - else if((this.advert.images.length === 0) && (this.tabOfNewImagesName.length === 0)) { - this.errorMessage = "Veuillez uploader au moins une image." ; - this.hasError = true; - } - else { - this.errorMessage = ""; - this.hasError = false; - } - } - - - - onCreateCallback(retour: any): void - { - if(retour.status !== "success") { - console.log(retour); - this.dialogRef.close(); - } - else { - this.dialogRef.close(retour.data); - } - } - - - onUpdateCallback(retour: any, id: string): void - { - if(retour.status !== "success") { - console.log(retour); - this.dialogRef.close(); - } - else { - this.advert.id = id; - this.dialogRef.close(this.advert); - } - } - - - onEventInputTags(myTags: string[]): void - { - this.advert.interests = myTags; - } - - - onRemoveImgAlreadyPresent(image) - { - const index = this.advert.images.indexOf(image); - this.advert.images.splice(index, 1); - } - - - onReceiveNewImages(files: any): void - { - this.tabOfNewImagesBase64 = []; - this.tabOfNewImagesName = []; - if(files) - { - for(let file of files) - { - if(file) - { - const reader = new FileReader(); - reader.onload = this.handleReaderLoaded.bind(this); - this.tabOfNewImagesName.push(file.name) - reader.readAsBinaryString(file); - } - } - } - } - handleReaderLoaded(e) - { - this.tabOfNewImagesBase64.push('data:image/png;base64,' + btoa(e.target.result)) - } - - - // Met bien en forme les "images" avant d'être envoyer - prepareAdvertImages(): void - { - for(let i=0; i - Êtes-vous sûr de vouloir supprimer l'annonce {{advert.title}} ? - - - - - - diff --git a/userAndAdvertiser/src/app/advertiser/adList/popup-delete-ad-advertiser/popup-delete-ad-advertiser.component.scss b/userAndAdvertiser/src/app/advertiser/adList/popup-delete-ad-advertiser/popup-delete-ad-advertiser.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/userAndAdvertiser/src/app/advertiser/adList/popup-delete-ad-advertiser/popup-delete-ad-advertiser.component.spec.ts b/userAndAdvertiser/src/app/advertiser/adList/popup-delete-ad-advertiser/popup-delete-ad-advertiser.component.spec.ts deleted file mode 100644 index 632a177..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/popup-delete-ad-advertiser/popup-delete-ad-advertiser.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PopupDeleteAdAdvertiserComponent } from './popup-delete-ad-advertiser.component'; - -describe('PopupDeleteAdComponent', () => { - let component: PopupDeleteAdAdvertiserComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PopupDeleteAdAdvertiserComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PopupDeleteAdAdvertiserComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/advertiser/adList/popup-delete-ad-advertiser/popup-delete-ad-advertiser.component.ts b/userAndAdvertiser/src/app/advertiser/adList/popup-delete-ad-advertiser/popup-delete-ad-advertiser.component.ts deleted file mode 100644 index c137557..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/popup-delete-ad-advertiser/popup-delete-ad-advertiser.component.ts +++ /dev/null @@ -1,47 +0,0 @@ -import {Component, Inject, OnInit} from '@angular/core'; -import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog"; -import {MessageService} from "../../../utils/message/message.service"; - - - -@Component({ - selector: 'app-popup-delete-ad-advertiser', - templateUrl: './popup-delete-ad-advertiser.component.html', - styleUrls: ['./popup-delete-ad-advertiser.component.scss'] -}) -export class PopupDeleteAdAdvertiserComponent implements OnInit -{ - advert: any; - - - constructor( public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data, - private messageService: MessageService) { } - - - ngOnInit(): void - { - this.advert = this.data.advert; - } - - - onValidate(): void - { - this.messageService - .delete("ad/delete/"+this.advert.id) - .subscribe(ret => this.onValidateCallback(ret), err => this.onValidateCallback(err)); - } - - - onValidateCallback(retour: any): void - { - if(retour.status !== "success") { - console.log(retour); - this.dialogRef.close(); - } - else { - this.dialogRef.close(true); - } - } - -} diff --git a/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-ad-advertiser/popup-visualize-ad-advertiser.component.html b/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-ad-advertiser/popup-visualize-ad-advertiser.component.html deleted file mode 100644 index a768258..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-ad-advertiser/popup-visualize-ad-advertiser.component.html +++ /dev/null @@ -1,71 +0,0 @@ -
- -

{{advert.title}}

- - - - - - - -
-
Images:
-
-
{{image.url}}
-
-
- - -
-
Centre d'intérêt :
-
-
• {{tag}}
-
-
- - -
-
Commentaire:
-
{{advert.comment}}
-
- - -
- -
{{advert.views}}
-
- - -
- -
- {{ advert.createdAt | date:'dd/LL/YYYY à HH:mm:ss' }} -
-
- - -
- -
- {{ advert.updatedAt | date:'dd/LL/YYYY à HH:mm:ss' }} -
-
- - -
- -
- checked - close -
-
- -
- - - - - - - -
diff --git a/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-ad-advertiser/popup-visualize-ad-advertiser.component.scss b/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-ad-advertiser/popup-visualize-ad-advertiser.component.scss deleted file mode 100644 index 3e00dee..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-ad-advertiser/popup-visualize-ad-advertiser.component.scss +++ /dev/null @@ -1,28 +0,0 @@ -.lightTheme, .darkTheme { - background-image: none; -} - - -h1 { - text-align: center; - font-size: xx-large; -} - - -.myRow { - margin: 15px 0px 15px 0px; -} - - -.myLabel { - text-align: right; - padding: 0px 5px 0px 0px; - margin: 0px; - font-weight: bold; -} - -.myValue { - text-align: left; - padding: 0px 0px 0px 5px; - margin: 0px; -} diff --git a/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-ad-advertiser/popup-visualize-ad-advertiser.component.spec.ts b/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-ad-advertiser/popup-visualize-ad-advertiser.component.spec.ts deleted file mode 100644 index 56aedbc..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-ad-advertiser/popup-visualize-ad-advertiser.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PopupVisualizeAdAdvertiserComponent } from './popup-visualize-ad-advertiser.component'; - -describe('PopupVisualizeAdComponent', () => { - let component: PopupVisualizeAdAdvertiserComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PopupVisualizeAdAdvertiserComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PopupVisualizeAdAdvertiserComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-ad-advertiser/popup-visualize-ad-advertiser.component.ts b/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-ad-advertiser/popup-visualize-ad-advertiser.component.ts deleted file mode 100644 index 80f5e09..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-ad-advertiser/popup-visualize-ad-advertiser.component.ts +++ /dev/null @@ -1,26 +0,0 @@ -import {Component, Inject, OnInit} from '@angular/core'; -import {MAT_DIALOG_DATA, MatDialog, MatDialogRef} from "@angular/material/dialog"; -import {ThemeService} from "../../../utils/theme/theme.service"; - - - -@Component({ - selector: 'app-popup-visualize-ad-advertiser', - templateUrl: './popup-visualize-ad-advertiser.component.html', - styleUrls: ['./popup-visualize-ad-advertiser.component.scss'] -}) -export class PopupVisualizeAdAdvertiserComponent implements OnInit -{ - advert: any; - - constructor( public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data, - public themeService: ThemeService, - public dialog: MatDialog ) { } - - ngOnInit(): void - { - this.advert = this.data.advert; - } - -} diff --git a/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-images-advertiser/popup-visualize-images-advertiser.component.html b/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-images-advertiser/popup-visualize-images-advertiser.component.html deleted file mode 100644 index dfbc2fe..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-images-advertiser/popup-visualize-images-advertiser.component.html +++ /dev/null @@ -1,20 +0,0 @@ -
-

- -
- - - - - - - - - - - - - - diff --git a/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-images-advertiser/popup-visualize-images-advertiser.component.scss b/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-images-advertiser/popup-visualize-images-advertiser.component.scss deleted file mode 100644 index eb60d48..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-images-advertiser/popup-visualize-images-advertiser.component.scss +++ /dev/null @@ -1,14 +0,0 @@ -carousel { - width: 100%; - margin: 0 auto; - text-align: center; - justify-content: center -} - - - -.dialog-title { - display: flex; - justify-content: space-between; - align-items: center; -} diff --git a/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-images-advertiser/popup-visualize-images-advertiser.component.spec.ts b/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-images-advertiser/popup-visualize-images-advertiser.component.spec.ts deleted file mode 100644 index 25da0db..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-images-advertiser/popup-visualize-images-advertiser.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PopupVisualizeImagesAdvertiserComponent } from './popup-visualize-images-advertiser.component'; - -describe('PopupVisualizeImagesComponent', () => { - let component: PopupVisualizeImagesAdvertiserComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PopupVisualizeImagesAdvertiserComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PopupVisualizeImagesAdvertiserComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-images-advertiser/popup-visualize-images-advertiser.component.ts b/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-images-advertiser/popup-visualize-images-advertiser.component.ts deleted file mode 100644 index 59e7c3d..0000000 --- a/userAndAdvertiser/src/app/advertiser/adList/popup-visualize-images-advertiser/popup-visualize-images-advertiser.component.ts +++ /dev/null @@ -1,38 +0,0 @@ -import {Component, Inject, OnInit} from '@angular/core'; -import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog"; - - - -@Component({ - selector: 'app-popup-visualize-images-advertiser', - templateUrl: './popup-visualize-images-advertiser.component.html', - styleUrls: ['./popup-visualize-images-advertiser.component.scss'] -}) -export class PopupVisualizeImagesAdvertiserComponent implements OnInit -{ - tabImages = []; - index: number = 0; - nbImage: number = 0; - - - constructor( public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data ) { } - - - ngOnInit(): void - { - this.tabImages = this.data.images; - this.nbImage = this.tabImages.length; - } - - onPrecedent(): void - { - if(this.index !== 0) this.index -= 1; - } - - onSuivant(): void - { - if(this.index !== (this.nbImage-1)) this.index += 1; - } - -} diff --git a/userAndAdvertiser/src/app/advertiser/myProfil/page-profil-advertiser/page-profil-advertiser.component.html b/userAndAdvertiser/src/app/advertiser/myProfil/page-profil-advertiser/page-profil-advertiser.component.html deleted file mode 100644 index 9af3317..0000000 --- a/userAndAdvertiser/src/app/advertiser/myProfil/page-profil-advertiser/page-profil-advertiser.component.html +++ /dev/null @@ -1,49 +0,0 @@ -
-
- - - - - -
- - -
- -
- - -
-
Entreprise:
-
{{advertiser.company}}
-
- - -
-
Pseudo:
-
{{advertiser.login}}
-
- - -
-
Mail:
-
{{advertiser.email}}
-
- - -
-
Date de création:
-
{{advertiser.createdAt | date:'dd/LL/YYYY'}}
-
- - -
- -
- -
- - -
-
diff --git a/userAndAdvertiser/src/app/advertiser/myProfil/page-profil-advertiser/page-profil-advertiser.component.scss b/userAndAdvertiser/src/app/advertiser/myProfil/page-profil-advertiser/page-profil-advertiser.component.scss deleted file mode 100644 index 966c9a2..0000000 --- a/userAndAdvertiser/src/app/advertiser/myProfil/page-profil-advertiser/page-profil-advertiser.component.scss +++ /dev/null @@ -1,61 +0,0 @@ -.myContainer { - max-width: 100vw; - height: 100vh; - overflow-x: hidden; -} - - -.boite { - margin-left: auto; - margin-right: auto; - width: 25%; - margin-top: 10vh; - border: solid 3px; - border-radius: 10px; - padding: 20px 40px 20px 40px; - background-color: #ffffff; - text-align: center; - box-shadow: 10px 5px 5px black; -} -.lightTheme .boite { - border-color: black; -} -.darkTheme .boite { - border-color: white; -} - - -img { - margin: 0px 0px 10px 0px; - width: 5vw; - height: 5vw; - border: solid 2px black; - border-radius: 50%; - font-size: xxx-large; -} - - -.myRow { - margin: 15px 0px 15px 0px; -} -.myLabel { - text-align: right; - padding: 0px 5px 0px 0px; - margin: 0px; - font-weight: bold; -} -.myValue { - text-align: left; - padding: 0px 0px 0px 5px; - margin: 0px; -} - - -.btnContainer { - text-align: center; - margin-top: 40px; -} -.myBtn { - border: solid 1px black; - background-color: white; -} diff --git a/userAndAdvertiser/src/app/advertiser/myProfil/page-profil-advertiser/page-profil-advertiser.component.spec.ts b/userAndAdvertiser/src/app/advertiser/myProfil/page-profil-advertiser/page-profil-advertiser.component.spec.ts deleted file mode 100644 index ebb9617..0000000 --- a/userAndAdvertiser/src/app/advertiser/myProfil/page-profil-advertiser/page-profil-advertiser.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PageProfilAdvertiserComponent } from './page-profil-advertiser.component'; - -describe('PageProfilAdvertiserComponent', () => { - let component: PageProfilAdvertiserComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PageProfilAdvertiserComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PageProfilAdvertiserComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/advertiser/myProfil/page-profil-advertiser/page-profil-advertiser.component.ts b/userAndAdvertiser/src/app/advertiser/myProfil/page-profil-advertiser/page-profil-advertiser.component.ts deleted file mode 100644 index ee16328..0000000 --- a/userAndAdvertiser/src/app/advertiser/myProfil/page-profil-advertiser/page-profil-advertiser.component.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import {MatDialog} from "@angular/material/dialog"; -import {MatSnackBar} from "@angular/material/snack-bar"; -import {PopupUpdateAdvertiserComponent} from "../popup-update-advertiser/popup-update-advertiser.component"; -import {ThemeService} from "../../../utils/theme/theme.service"; -import {MessageService} from "../../../utils/message/message.service"; -import {ProfilService} from "../../../utils/profil/profil.service"; - - - -@Component({ - selector: 'app-page-profil-advertiser', - templateUrl: './page-profil-advertiser.component.html', - styleUrls: ['./page-profil-advertiser.component.scss'] -}) -export class PageProfilAdvertiserComponent implements OnInit -{ - advertiser = { - _id: "", - login: "", - hashPass: "", - email: "", - role: { - name: "advertiser", - permission: 5, - isAccepted: true, - }, - profileImageUrl: "", - dateOfBirth: null, - gender: "man", - interests: [], - company: "", - isActive: true, - createdAt: new Date(), - updatedAt: new Date(), - lastConnexion: null - }; - - - constructor( public themeService: ThemeService, - public dialog: MatDialog, - private snackBar: MatSnackBar, - private messageService: MessageService, - private profilService: ProfilService ) { } - - - ngOnInit(): void - { - this.messageService - .get( "user/findOne/"+this.profilService.getId()) - .subscribe( retour => this.ngOnInitCallback(retour), err => this.ngOnInitCallback(err) ) - } - - - ngOnInitCallback(retour: any) - { - if(retour.status !== "success") { - console.log(retour); - } - else { - this.advertiser = retour.data; - } - } - - - onModifier() - { - const config = { - width: '25%', - data: { advertiser: this.advertiser } - }; - this.dialog - .open(PopupUpdateAdvertiserComponent, config) - .afterClosed() - .subscribe(retour => { - - if((retour === null) || (retour === undefined)) - { - const config = { duration: 1000, panelClass: "custom-class" }; - this.snackBar.open( "Opération annulé", "", config); - } - else - { - this.advertiser = retour; - } - }); - } - -} diff --git a/userAndAdvertiser/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.html b/userAndAdvertiser/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.html deleted file mode 100644 index 4951e5c..0000000 --- a/userAndAdvertiser/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.html +++ /dev/null @@ -1,65 +0,0 @@ -
-
- - -
-
- -
- - -

- - - - Entreprise - -
- - - - Pseudo - -
- - -
- - -
- Modifier mot de passe: - -
- - -
- - - Nouveau mot de passe - - -
- - - Confirmation nouveau mot de passe - - -
-

- - -
- - -
- {{errorMessage}} -
- - -
- - -
- -
-
diff --git a/userAndAdvertiser/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.scss b/userAndAdvertiser/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.scss deleted file mode 100644 index 1968e90..0000000 --- a/userAndAdvertiser/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.scss +++ /dev/null @@ -1,33 +0,0 @@ -.boite { - font-size: small; -} - -button { - font-size: small; -} - -img { - margin: 0px 0px 10px 0px; - width: 5vw; - height: 5vw; - border: solid 2px black; - border-radius: 50%; - font-size: xxx-large; -} - -// ------------------------------------------------------------------------- - -// aura -::ng-deep .mat-checkbox-ripple .mat-ripple-element { - background-color: grey !important; -} - -// contenu coche -::ng-deep .mat-checkbox-checked.mat-accent .mat-checkbox-background { - background-color: black !important; -} - -// indeterminate -::ng-deep .mat-checkbox .mat-checkbox-frame { - background-color: white !important; -} diff --git a/userAndAdvertiser/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.spec.ts b/userAndAdvertiser/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.spec.ts deleted file mode 100644 index dde7ef9..0000000 --- a/userAndAdvertiser/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PopupUpdateAdvertiserComponent } from './popup-update-advertiser.component'; - -describe('PopupUpdateAdvertiserComponent', () => { - let component: PopupUpdateAdvertiserComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PopupUpdateAdvertiserComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PopupUpdateAdvertiserComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.ts b/userAndAdvertiser/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.ts deleted file mode 100644 index b93fdef..0000000 --- a/userAndAdvertiser/src/app/advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component.ts +++ /dev/null @@ -1,124 +0,0 @@ -import {Component, Inject, OnInit} from '@angular/core'; -import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog"; -import {MessageService} from "../../../utils/message/message.service"; -import {ProfilService} from "../../../utils/profil/profil.service"; - - - -@Component({ - selector: 'app-popup-update-advertiser', - templateUrl: './popup-update-advertiser.component.html', - styleUrls: ['./popup-update-advertiser.component.scss'] -}) -export class PopupUpdateAdvertiserComponent implements OnInit -{ - advertiserCopy; - newPassword: string = ""; - confirmNewPassword: string = "" ; - changePassword: boolean = false ; - hasError: boolean = false; - errorMessage: string = "" ; - - - constructor( public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data, - private messageService: MessageService, - private profilService: ProfilService ) { } - - - ngOnInit(): void - { - const advertiser0 = this.data.advertiser; - this.advertiserCopy = { - _id: advertiser0._id, - login: advertiser0.login, - hashPass: advertiser0.hashPass, - email: advertiser0.email, - role: { - name: advertiser0.role.name, - permission: advertiser0.role.permission, - isAccepted: advertiser0.role.isAccepted, - }, - profileImageUrl: advertiser0.profileImageUrl, - dateOfBirth: advertiser0.dateOfBirth, - gender: advertiser0.gender, - interests: [], - company: advertiser0.company, - isActive: advertiser0.isActive, - createdAt: advertiser0.createdAt, - updatedAt: advertiser0.updatedAt, - lastConnexion: new Date() - }; - for(let interest of advertiser0.interests) this.advertiserCopy.interests.push(interest); - } - - - onValider() - { - this.checkField(); - if(!this.hasError) - { - if(this.changePassword) this.advertiserCopy.hashPass = this.newPassword; - const data = { - login: this.advertiserCopy.login, - hashPass: this.advertiserCopy.hashPass, - email: this.advertiserCopy.email, - profileImageUrl: this.advertiserCopy.profileImageUrl, - company: this.advertiserCopy.company - }; - this.messageService - .put("user/update/"+this.profilService.getId(), data) - .subscribe( ret => this.onValiderCallback(ret), err => this.onValiderCallback(err) ); - } - } - - - onValiderCallback(retour: any) - { - if(retour.status !== "success") { - console.log(retour); - this.dialogRef.close(null); - } - else { - this.profilService.setProfileImageUrl(this.advertiserCopy.profileImageUrl); - this.dialogRef.close(this.advertiserCopy); - } - } - - - checkField() - { - if(this.advertiserCopy.login.length === 0) { - this.errorMessage = "Veuillez remplir le champ 'pseudo'" ; - this.hasError = true; - } - else if(this.advertiserCopy.email.length === 0) { - this.errorMessage = "Veuillez remplir le champ 'email'" ; - this.hasError = true; - } - else if(!this.isValidEmail(this.advertiserCopy.email)) { - this.errorMessage = "Email invalide" ; - this.hasError = true; - } - else if((this.changePassword) && (this.newPassword.length === 0)) { - this.errorMessage = "Veuillez remplir le champ 'mot de passe'" ; - this.hasError = true; - } - else if((this.changePassword) && (this.newPassword !== this.confirmNewPassword)) { - this.errorMessage = "Le mot de passe est différent de sa confirmation" ; - this.hasError = true; - } - else { - this.errorMessage = "" ; - this.hasError = false; - } - } - - - isValidEmail(email) - { - let re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; - return re.test(email); - } - -} diff --git a/userAndAdvertiser/src/app/advertiser/pages-popularity/pages-popularity.component.html b/userAndAdvertiser/src/app/advertiser/pages-popularity/pages-popularity.component.html deleted file mode 100644 index 62ae0e1..0000000 --- a/userAndAdvertiser/src/app/advertiser/pages-popularity/pages-popularity.component.html +++ /dev/null @@ -1,94 +0,0 @@ -
-
- - - - - - - - -
- -
Filtre
- -
- -
- -

- -
- -
- -
- - - - -
- - -
- - -
-
- - - - - - - - - début - - -   -   - - - - fin - - -   -   - - - - pas d'affichage - - -   -   - - - - unité du pas d'affichage - - jour - semaine - mois - -
- - - - - - - {{coupleNameViews.name}}, - - - {{coupleNameViews.name}} - - - - -
diff --git a/userAndAdvertiser/src/app/advertiser/pages-popularity/pages-popularity.component.scss b/userAndAdvertiser/src/app/advertiser/pages-popularity/pages-popularity.component.scss deleted file mode 100644 index 00fb9e3..0000000 --- a/userAndAdvertiser/src/app/advertiser/pages-popularity/pages-popularity.component.scss +++ /dev/null @@ -1,53 +0,0 @@ -.myContainer { - font-size: small; - max-width: 100vw; - height: 100vh; - overflow-x: hidden; - overflow-y: scroll; -} - -input { - font-size: small; - width: 140px; -} - -.filtersContainer { - background-color: white; - width: 60%; - margin: 50px 50px 50px 50px; - padding: 20px 20px 20px 20px; -} - -.chartContainer { - background-color: white; - border: solid 1px black; - padding: 10px 10px 10px 10px; - margin: 50px 50px 50px 50px; -} - - -// --------------------------------------------- -// periode - -.periode { - padding: 10px 10px 0px 10px; -} - -.periode .titleContainer { - text-align: right; - border-right: solid 1px #dcdcdc; - font-weight: bold; -} - -.btnToutSelectionner { - font-size: small; -} -.btnToutDeselectionner { - font-size: small; -} - -// ------------------------------------------------------------------------- - -::ng-deep .mat-pseudo-checkbox-checked { - background-color: black !important; -} diff --git a/userAndAdvertiser/src/app/advertiser/pages-popularity/pages-popularity.component.spec.ts b/userAndAdvertiser/src/app/advertiser/pages-popularity/pages-popularity.component.spec.ts deleted file mode 100644 index f9ff236..0000000 --- a/userAndAdvertiser/src/app/advertiser/pages-popularity/pages-popularity.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PagesPopularityComponent } from './pages-popularity.component'; - -describe('SubjectsPopularityComponent', () => { - let component: PagesPopularityComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PagesPopularityComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PagesPopularityComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/advertiser/pages-popularity/pages-popularity.component.ts b/userAndAdvertiser/src/app/advertiser/pages-popularity/pages-popularity.component.ts deleted file mode 100644 index 298ec8d..0000000 --- a/userAndAdvertiser/src/app/advertiser/pages-popularity/pages-popularity.component.ts +++ /dev/null @@ -1,304 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import {FormControl} from "@angular/forms"; -import {ChartDataSets} from "chart.js"; -import {Label} from "ng2-charts"; -import { Router} from "@angular/router"; -import {HttpParams} from "@angular/common/http"; -import {ThemeService} from "../../utils/theme/theme.service"; -import {MessageService} from "../../utils/message/message.service"; - - - -interface CoupleNameViews { - name: string, - views: Date[], -} - - - -@Component({ - selector: 'app-subjects-popularity', - templateUrl: './pages-popularity.component.html', - styleUrls: ['./pages-popularity.component.scss'] -}) -export class PagesPopularityComponent implements OnInit -{ - formControl: FormControl = new FormControl(); - allCoupleNameViews: CoupleNameViews[] = []; - - allInterests: string[] = []; - - startDate: Date = null; - endDate: Date = null; - step: number = 1; - stepUnity: string = "jour" ; - - oneDay: number = 24*60*60*1000; - oneWeek: number = 7*24*60*60*1000; - - lineChartData: ChartDataSets[] = []; - lineChartLabels: Label[] = []; - chartOptions: any = { - responsive: true, - scales: { - yAxes: [{ display: true, scaleLabel: { display: true, labelString: "vues" } }], - xAxes: [{ scaleLabel: { display: true, labelString: "temps" } }], - } - }; - - isDisplayable: boolean = false; - - - constructor( private router: Router, - public themeService: ThemeService, - private messageService: MessageService ) {} - - - // ----------------------------------------------------------------------------------------------------- - - - ngOnInit(): void - { - // Sera excuté si on est sur la page 'adsPopularity' - // Remplie l'attribut 'allCoupleNameViews' - if(this.router.url.includes("ads")) - { - let params = new HttpParams(); - params = params.append("isActive", true); - this.messageService - .get("ad/findAll", params ) - .subscribe(ret => this.afterReceivingAds(ret), err => this.afterReceivingAds(err)); - } - - // Sera excuté si on est sur la page 'subjectsPopularity' - // Remplie l'attribut 'allCoupleNameViews' - else if(this.router.url.includes("subjects")) - { - this.messageService - .get("misc/getInterests") - .subscribe( retour => { - - if(retour.status !== "success") { - console.log(retour); - } - else { - this.allInterests = retour.data.map(x => x.interest); - this.allInterests.sort(); - this.messageService - .get("video/findAll") - .subscribe(ret => this.afterReceivingVideos(ret), err => this.afterReceivingVideos(err)); - } - }); - } - } - - - // Callback: Sera excuté si on est sur la page 'adsPopularity' - afterReceivingAds(retour: any): void - { - if(retour.status !== "success") { - console.log(retour); - } - else { - const allAdverts = retour.data; - for(let advert of allAdverts) - { - let couple = {name: advert.title, views: advert.views } - this.allCoupleNameViews.push(couple); - } - - this.formControl = new FormControl(this.allCoupleNameViews); - this.onApplyFilter(); - } - } - - - // Callback: Sera excuté si on est sur la page 'subjectsPopularity' - afterReceivingVideos(retour: any): void - { - if(retour.status !== "success") { - console.log(retour); - } - else { - const allVideos = retour.data; - let myMap: Map = new Map(); - - // parcours des interest de chaque video - for(let video of allVideos) - { - const key = video.interest; - if(!myMap.has(key)) myMap.set(key, video.watchedDates); - else { - let tabDate = myMap.get(key); - for(let date0 of video.watchedDates) tabDate = this.insertInOrder(tabDate, date0); - myMap.set(key, tabDate); - } - } - - // parcours les interest qui n'ont pas p été vu dans les videos - for(let interest of this.allInterests) - { - if(!myMap.has(interest)) myMap.set(interest, []); - } - - // parcours de la map pour remplir 'allCoupleNameViews' - for(const [key, value] of myMap.entries()) - { - let couple = {name: key, views: value } - this.allCoupleNameViews.push(couple); - } - - this.formControl = new FormControl(this.allCoupleNameViews); - this.onApplyFilter(); - } - } - - - // ----------------------------------------------------------------------------------------------------- - - - // Applique le filtre - onApplyFilter(): void - { - // --- initialisation --- - this.lineChartData = []; - this.lineChartLabels = []; - - if(this.step <= 0) this.step = 0; - if((this.endDate === null) || (this.endDate === undefined)) this.endDate = new Date(); - if((this.startDate === null) || (this.startDate === undefined)) this.startDate = new Date(this.endDate.getTime() - this.oneWeek); // date d'il y a une semaine - - const startTime = this.startDate.getTime(); - const endTime = this.endDate.getTime(); - - - // --- remplissage de 'lineChartLabels' --- - let dataWithZeros = []; - let time = startTime; - const intervals = []; - while(time <= endTime) - { - dataWithZeros.push(0); - this.lineChartLabels.push(this.getLabel(new Date(time))); - intervals.push(time); - time = this.addStep(time); - } - intervals.push(time); - - - // --- remplissage de 'lineChartLabels' --- - for(let coupleNameViews of this.formControl.value) - { - let data = dataWithZeros.slice(); - let label = coupleNameViews.name; - let index = 0; - - for(let date0 of coupleNameViews.views) - { - const time0 = (new Date(date0)).getTime(); - - if(time0 > endTime) break; - - if((startTime <= time0) && (time0 <= endTime)) - { - while((index < intervals.length) && (time0 >= intervals[index])) index += 1; - index = index - 1; - data[index] += 1; - } - } - - this.lineChartData.push({"data": data.slice(), "label": label}); - } - this.isDisplayable = true; - } - - - onNewStartDate(event): void { - this.startDate = new Date(event); - } - - - onNewEndDate(event): void { - this.endDate = new Date(event); - } - - - // Renvoie le bon label pour le graph - getLabel(date0: Date): string - { - if((this.stepUnity === 'jour') && (this.step === 1)) - { - return date0.toLocaleDateString(); - } - else { - const time2 = this.addStep((new Date(date0)).getTime()) - this.oneDay; - let date2 = new Date(time2); - return date0.toLocaleDateString() + " à " + date2.toLocaleDateString(); - } - } - - - // Ajoute le bon pas à la date 'new Date(time)' - addStep(time: number): number - { - let newDate; - - if(this.stepUnity === 'jour') { - newDate = new Date(time + this.step*this.oneDay); - } - else if(this.stepUnity === 'semaine') { - newDate = new Date(time + this.step*this.oneWeek); - } - else - { - const oldDate = new Date(time); - - let newMonth = oldDate.getMonth() + this.step; - const newYear = oldDate.getFullYear() + (newMonth / 12); - newMonth = newMonth % 12; - const day = this.startDate.getDate(); - - if((newMonth === 1) && ([29, 30, 31].includes(day))) { // si fevrier et si jour n'existe pas - newDate = new Date(newYear, newMonth, 28); - } - else if((day === 31) && ([3, 5, 9, 10].includes(newMonth))) { // si 31 et mois à 30 jours - newDate = new Date(newYear, newMonth, 30); - } - else { - newDate = new Date(newYear, newMonth, day); - } - } - - const _1h = 60*60*1000; - if(newDate.getHours() === 23) return newDate.getTime() + _1h; - else if(newDate.getHours() === 1) return newDate.getTime() - _1h; - else return newDate.getTime(); - } - - - // Insere la date0 dans le tableau tabDate par ordre croissant - insertInOrder(tabDate: Date[], date0: Date): Date[] - { - let i = 0; - let n = tabDate.length; - let time0 = (new Date(date0)).getTime(); - - while((i (new Date(tabDate[i])).getTime())) i++; - if(i === n) tabDate.push(date0); - else tabDate.splice(i, 0, date0); - - return tabDate; - } - - - onSelectAll(): void - { - this.formControl = new FormControl(this.allCoupleNameViews); - } - - onDeSelectAll(): void - { - this.formControl = new FormControl([]); - } - -} diff --git a/userAndAdvertiser/src/app/advertiser/utils/dragAndDrop/drag-and-drop.directive.spec.ts b/userAndAdvertiser/src/app/advertiser/utils/dragAndDrop/drag-and-drop.directive.spec.ts deleted file mode 100644 index 60cf3d6..0000000 --- a/userAndAdvertiser/src/app/advertiser/utils/dragAndDrop/drag-and-drop.directive.spec.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { DragAndDropDirective } from './drag-and-drop.directive'; - -describe('DragAndDropDirective', () => { - it('should create an instance', () => { - const directive = new DragAndDropDirective(); - expect(directive).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/advertiser/utils/dragAndDrop/drag-and-drop.directive.ts b/userAndAdvertiser/src/app/advertiser/utils/dragAndDrop/drag-and-drop.directive.ts deleted file mode 100644 index b3d1162..0000000 --- a/userAndAdvertiser/src/app/advertiser/utils/dragAndDrop/drag-and-drop.directive.ts +++ /dev/null @@ -1,36 +0,0 @@ -import {Directive, EventEmitter, HostBinding, HostListener, Output} from '@angular/core'; - -@Directive({ - selector: '[appDragAndDrop]' -}) -export class DragAndDropDirective -{ - @HostBinding('class.fileover') fileOver: boolean; - @Output() fileDropped = new EventEmitter(); - - // Dragover listener - @HostListener('dragover', ['$event']) onDragOver(evt) { - evt.preventDefault(); - evt.stopPropagation(); - this.fileOver = true; - } - - // Dragleave listener - @HostListener('dragleave', ['$event']) public onDragLeave(evt) { - evt.preventDefault(); - evt.stopPropagation(); - this.fileOver = false; - } - - // Drop listener - @HostListener('drop', ['$event']) public ondrop(evt) { - evt.preventDefault(); - evt.stopPropagation(); - this.fileOver = false; - let files = evt.dataTransfer.files; - if (files.length > 0) { - this.fileDropped.emit(files); - } - } - -} diff --git a/userAndAdvertiser/src/app/advertiser/utils/navbar-advertiser/navbar-advertiser.component.html b/userAndAdvertiser/src/app/advertiser/utils/navbar-advertiser/navbar-advertiser.component.html deleted file mode 100644 index da5e898..0000000 --- a/userAndAdvertiser/src/app/advertiser/utils/navbar-advertiser/navbar-advertiser.component.html +++ /dev/null @@ -1,41 +0,0 @@ - diff --git a/userAndAdvertiser/src/app/advertiser/utils/navbar-advertiser/navbar-advertiser.component.scss b/userAndAdvertiser/src/app/advertiser/utils/navbar-advertiser/navbar-advertiser.component.scss deleted file mode 100644 index 285d629..0000000 --- a/userAndAdvertiser/src/app/advertiser/utils/navbar-advertiser/navbar-advertiser.component.scss +++ /dev/null @@ -1,80 +0,0 @@ -.navbar { - background-color: black; - height: 60px; - font-size: medium; - color: white; -} - - -.navbar-expand-lg { - border-bottom: solid; - border-color: white; - border-bottom-width: 2px; -} - - -// PolyNotFound -.navbar-brand { - font-family: cursive; - font-weight: bold; - font-size: x-large; - margin-left: 15px; - color: white; -} - - -.monLi { - margin: 0px 10px 0px 10px; -} - - -.nav-link { - color: white; -} -.nav-link:hover { - color: grey; -} -.myActiveLink { - text-decoration: underline; -} - - -.btnDeconnexion { - font-size: medium; - margin: 0px 10px 0px 10px -} -.btnDeconnexion:hover { - color: grey; -} - - -img { - border: solid 2px white; - border-radius: 50px; - margin: 0px 10px 0px 15px; - width: 40px; - height: 40px; -} -img:hover { - cursor: pointer; -} - - -// -------------------------------------------------------------------- - - -::ng-deep .mat-slide-toggle-thumb { - background-color: #c8c8c8; -} - -::ng-deep .mat-slide-toggle-bar { - background-color: #ffffff; -} - -::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-thumb { - background-color: #ffffff; -} - -::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-bar { - background-color: #646464; -} diff --git a/userAndAdvertiser/src/app/advertiser/utils/navbar-advertiser/navbar-advertiser.component.spec.ts b/userAndAdvertiser/src/app/advertiser/utils/navbar-advertiser/navbar-advertiser.component.spec.ts deleted file mode 100644 index fb00a09..0000000 --- a/userAndAdvertiser/src/app/advertiser/utils/navbar-advertiser/navbar-advertiser.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { NavbarAdvertiserComponent } from './navbar-advertiser.component'; - -describe('NavbarAdvertiserComponent', () => { - let component: NavbarAdvertiserComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ NavbarAdvertiserComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(NavbarAdvertiserComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/advertiser/utils/navbar-advertiser/navbar-advertiser.component.ts b/userAndAdvertiser/src/app/advertiser/utils/navbar-advertiser/navbar-advertiser.component.ts deleted file mode 100644 index c65b5fe..0000000 --- a/userAndAdvertiser/src/app/advertiser/utils/navbar-advertiser/navbar-advertiser.component.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { Component } from '@angular/core'; -import {Router} from "@angular/router"; -import {ProfilService} from "../../../utils/profil/profil.service"; -import {MessageService} from "../../../utils/message/message.service"; - - - -@Component({ - selector: 'app-navbar-advertiser', - templateUrl: './navbar-advertiser.component.html', - styleUrls: ['./navbar-advertiser.component.scss'] -}) -export class NavbarAdvertiserComponent -{ - routes: string[] = [ - "/advertiser", // 0 - "/advertiser/adList", // 1 - "/advertiser/adsPopularity", // 2 - "/advertiser/subjectsPopularity", // 3 - "/advertiser/myProfil" // 4 - ]; - - url = this.router.url; - - constructor( private router: Router, - public profilService: ProfilService, - private messageService: MessageService ) { } - - onDeconnexion(): void - { - this.messageService - .delete('user/logout') - .subscribe(retour => this.onDeconnexionCallback(retour), err => this.onDeconnexionCallback(err)); - } - - onDeconnexionCallback(retour: any): void - { - if(retour.status !== "success") console.log(retour); - } - -} diff --git a/userAndAdvertiser/src/app/app-routing.module.ts b/userAndAdvertiser/src/app/app-routing.module.ts deleted file mode 100644 index d1888ec..0000000 --- a/userAndAdvertiser/src/app/app-routing.module.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; -import {PageLoginComponent} from "./beforeConnexion/login/page-login/page-login.component"; -import {PageRegisterComponent} from "./beforeConnexion/register/page-register/page-register.component"; -import {PageSearchComponent} from "./user/search/page-search/page-search.component"; -import {PageMyPlaylistsComponent} from "./user/myPlaylists/page-my-playlists/page-my-playlists.component"; -import {PageProfilUserComponent} from "./user/myProfil/page-profil-user/page-profil-user.component"; -import {PageWatchingVideoComponent} from "./user/watching/page-watching-video/page-watching-video.component"; -import {PageHistoryUserComponent} from "./user/history/page-history-user/page-history-user.component"; -import {PageAdListAdvertiserComponent} from "./advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component"; -import {PagesPopularityComponent} from "./advertiser/pages-popularity/pages-popularity.component"; -import {PageProfilAdvertiserComponent} from "./advertiser/myProfil/page-profil-advertiser/page-profil-advertiser.component"; - - -const routes: Routes = [ - // Before connexion - { path: '', component: PageLoginComponent }, - { path: 'login', component: PageLoginComponent }, - { path: 'register', component: PageRegisterComponent }, - - // User - { path: 'user', component: PageSearchComponent }, - { path: 'user/search', component: PageSearchComponent }, - { path: 'user/myPlaylists', component: PageMyPlaylistsComponent }, - { path: 'user/history', component: PageHistoryUserComponent }, - { path: 'user/myProfil', component: PageProfilUserComponent }, - { path: 'user/watching', component: PageWatchingVideoComponent }, - - // Advertiser - { path: 'advertiser', component: PageAdListAdvertiserComponent }, - { path: 'advertiser/adList', component: PageAdListAdvertiserComponent }, - { path: 'advertiser/myProfil', component: PageProfilAdvertiserComponent }, - { path: 'advertiser/adsPopularity', component: PagesPopularityComponent }, - { path: 'advertiser/subjectsPopularity', component: PagesPopularityComponent }, -]; - -@NgModule({ - imports: [RouterModule.forRoot(routes)], - exports: [RouterModule] -}) -export class AppRoutingModule { } diff --git a/userAndAdvertiser/src/app/app.component.html b/userAndAdvertiser/src/app/app.component.html deleted file mode 100644 index d5d92f3..0000000 --- a/userAndAdvertiser/src/app/app.component.html +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/userAndAdvertiser/src/app/app.component.scss b/userAndAdvertiser/src/app/app.component.scss deleted file mode 100644 index 22a5665..0000000 --- a/userAndAdvertiser/src/app/app.component.scss +++ /dev/null @@ -1,24 +0,0 @@ -::ng-deep snack-bar-container.custom-class { - //background: yellow; -} -::ng-deep .custom-class .mat-simple-snackbar { - //color: green; - justify-content: center; -} - - -// aura -::ng-deep .mat-checkbox-ripple .mat-ripple-element { - background-color: grey !important; -} - -// contenu coche -::ng-deep .mat-checkbox-checked.mat-accent .mat-checkbox-background { - background-color: black !important; -} - -// indeterminate -::ng-deep .mat-checkbox .mat-checkbox-frame { - border: solid 1px black !important; - background-color: white !important; -} diff --git a/userAndAdvertiser/src/app/app.component.spec.ts b/userAndAdvertiser/src/app/app.component.spec.ts deleted file mode 100644 index ab837bf..0000000 --- a/userAndAdvertiser/src/app/app.component.spec.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; -import { AppComponent } from './app.component'; - -describe('AppComponent', () => { - beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [ - RouterTestingModule - ], - declarations: [ - AppComponent - ], - }).compileComponents(); - }); - - it('should create the app', () => { - const fixture = TestBed.createComponent(AppComponent); - const app = fixture.componentInstance; - expect(app).toBeTruthy(); - }); - - it(`should have as title 'userAndAdvertiser'`, () => { - const fixture = TestBed.createComponent(AppComponent); - const app = fixture.componentInstance; - expect(app.title).toEqual('userAndAdvertiser'); - }); - - it('should render title', () => { - const fixture = TestBed.createComponent(AppComponent); - fixture.detectChanges(); - const compiled = fixture.nativeElement as HTMLElement; - expect(compiled.querySelector('.content span')?.textContent).toContain('userAndAdvertiser app is running!'); - }); -}); diff --git a/userAndAdvertiser/src/app/app.component.ts b/userAndAdvertiser/src/app/app.component.ts deleted file mode 100644 index 945afdf..0000000 --- a/userAndAdvertiser/src/app/app.component.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.scss'] -}) -export class AppComponent { - title = 'userAndAdvertiser'; -} diff --git a/userAndAdvertiser/src/app/app.module.ts b/userAndAdvertiser/src/app/app.module.ts deleted file mode 100644 index dc1e214..0000000 --- a/userAndAdvertiser/src/app/app.module.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { NgModule } from '@angular/core'; -import { BrowserModule } from '@angular/platform-browser'; - -import { AppRoutingModule } from './app-routing.module'; -import { AppComponent } from './app.component'; -import {BrowserAnimationsModule} from "@angular/platform-browser/animations"; -import {MatSlideToggleModule} from "@angular/material/slide-toggle"; -import {FormsModule, ReactiveFormsModule} from "@angular/forms"; -import {HttpClientModule} from "@angular/common/http"; -import {MatIconModule} from "@angular/material/icon"; -import {MatDialogModule} from "@angular/material/dialog"; -import {MatButtonModule} from "@angular/material/button"; -import {MatInputModule} from "@angular/material/input"; -import {MatCheckboxModule} from "@angular/material/checkbox"; -import {MatFormFieldModule} from "@angular/material/form-field"; -import {MatDividerModule} from "@angular/material/divider"; -import {MatSnackBarModule} from "@angular/material/snack-bar"; -import {MatGridListModule} from "@angular/material/grid-list"; -import {MatTableModule} from "@angular/material/table"; -import {MatSortModule} from "@angular/material/sort"; -import {MatChipsModule} from "@angular/material/chips"; -import {MatSelectModule} from "@angular/material/select"; -import {MatAutocompleteModule} from "@angular/material/autocomplete"; -import {MatRadioModule} from "@angular/material/radio"; -import {MatPaginatorModule} from "@angular/material/paginator"; -import {MatDatepickerModule} from "@angular/material/datepicker"; -import { ChartsModule } from 'ng2-charts'; -import {DragAndDropComponent} from "./advertiser/adList/drag-and-drop/drag-and-drop.component"; -import {InputInterestsAdComponent} from "./advertiser/adList/input-interests-ad/input-interests-ad.component"; -import {PageAdListAdvertiserComponent} from "./advertiser/adList/page-ad-list-advertiser/page-ad-list-advertiser.component"; -import {PopupAddOrUpdateAdComponent} from "./advertiser/adList/popup-add-or-update-ad/popup-add-or-update-ad.component"; -import {PopupDeleteAdAdvertiserComponent} from "./advertiser/adList/popup-delete-ad-advertiser/popup-delete-ad-advertiser.component"; -import {PopupVisualizeAdAdvertiserComponent} from "./advertiser/adList/popup-visualize-ad-advertiser/popup-visualize-ad-advertiser.component"; -import {PopupVisualizeImagesAdvertiserComponent} from "./advertiser/adList/popup-visualize-images-advertiser/popup-visualize-images-advertiser.component"; -import {NavbarAdvertiserComponent} from "./advertiser/utils/navbar-advertiser/navbar-advertiser.component"; -import {DragAndDropDirective} from "./advertiser/utils/dragAndDrop/drag-and-drop.directive"; -import {PageProfilAdvertiserComponent} from "./advertiser/myProfil/page-profil-advertiser/page-profil-advertiser.component"; -import {PopupUpdateAdvertiserComponent} from "./advertiser/myProfil/popup-update-advertiser/popup-update-advertiser.component"; -import {PagesPopularityComponent} from "./advertiser/pages-popularity/pages-popularity.component"; -import {NavbarUserComponent} from "./user/utils/components/navbar-user/navbar-user.component"; -import {PageHistoryUserComponent} from "./user/history/page-history-user/page-history-user.component"; -import {PageMyPlaylistsComponent} from "./user/myPlaylists/page-my-playlists/page-my-playlists.component"; -import {PlaylistListComponent} from "./user/myPlaylists/playlist-list/playlist-list.component"; -import {PopupCreateOrUpdatePlaylistComponent} from "./user/myPlaylists/popup-create-or-update-playlist/popup-create-or-update-playlist.component"; -import {PopupDeletePlaylistComponent} from "./user/myPlaylists/popup-delete-playlist/popup-delete-playlist.component"; -import {VideoListComponent} from "./user/myPlaylists/video-list/video-list.component"; -import {InputInterestsProfilComponent} from "./user/myProfil/input-interests-profil/input-interests-profil.component"; -import {PageProfilUserComponent} from "./user/myProfil/page-profil-user/page-profil-user.component"; -import {PopupUpdateUserComponent} from "./user/myProfil/popup-update-user/popup-update-user.component"; -import {PageSearchComponent} from "./user/search/page-search/page-search.component"; -import {VideoGridComponent} from "./user/search/video-grid/video-grid.component"; -import {PageWatchingVideoComponent} from "./user/watching/page-watching-video/page-watching-video.component"; -import {AdvertComponent} from "./user/utils/components/advert/advert.component"; -import {PopupAddVideoToPlaylistsComponent} from "./user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component"; -import {PageLoginComponent} from "./beforeConnexion/login/page-login/page-login.component"; -import {PopupForgottenPasswordComponent} from "./beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component"; -import {InputInterestsRegisterComponent} from "./beforeConnexion/register/input-interests-register/input-interests-register.component"; -import {PageRegisterComponent} from "./beforeConnexion/register/page-register/page-register.component"; -import {PopupConfirmationComponent} from "./beforeConnexion/register/popup-confirmation/popup-confirmation.component"; -import {NavbarBeforeConnexionComponent} from "./beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component"; -import {MatStepperModule} from "@angular/material/stepper"; - -@NgModule({ - declarations: [ - AppComponent, - DragAndDropDirective, - NavbarBeforeConnexionComponent, - PageLoginComponent, - PopupForgottenPasswordComponent, - InputInterestsRegisterComponent, - PageRegisterComponent, - PopupConfirmationComponent, - NavbarAdvertiserComponent, - DragAndDropComponent, - InputInterestsAdComponent, - PageAdListAdvertiserComponent, - PopupAddOrUpdateAdComponent, - PopupDeleteAdAdvertiserComponent, - PopupVisualizeAdAdvertiserComponent, - PopupVisualizeImagesAdvertiserComponent, - PageProfilAdvertiserComponent, - PopupUpdateAdvertiserComponent, - PagesPopularityComponent, - NavbarUserComponent, - PageHistoryUserComponent, - PageMyPlaylistsComponent, - PlaylistListComponent, - PopupCreateOrUpdatePlaylistComponent, - PopupDeletePlaylistComponent, - VideoListComponent, - InputInterestsProfilComponent, - PageProfilUserComponent, - PopupUpdateUserComponent, - PageSearchComponent, - VideoGridComponent, - PageWatchingVideoComponent, - AdvertComponent, - PopupAddVideoToPlaylistsComponent - ], - imports: [ - BrowserModule, - AppRoutingModule, - BrowserAnimationsModule, - MatSlideToggleModule, - FormsModule, - HttpClientModule, - MatDialogModule, - MatButtonModule, - MatIconModule, - MatInputModule, - MatDividerModule, - MatCheckboxModule, - MatFormFieldModule, - MatSnackBarModule, - MatGridListModule, - MatTableModule, - MatSortModule, - MatChipsModule, - ReactiveFormsModule, - MatAutocompleteModule, - MatSelectModule, - MatRadioModule, - MatPaginatorModule, - MatDatepickerModule, - ChartsModule, - MatStepperModule - ], - providers: [], - bootstrap: [AppComponent] -}) -export class AppModule { } diff --git a/userAndAdvertiser/src/app/beforeConnexion/login/page-login/page-login.component.html b/userAndAdvertiser/src/app/beforeConnexion/login/page-login/page-login.component.html deleted file mode 100644 index 675270e..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/login/page-login/page-login.component.html +++ /dev/null @@ -1,36 +0,0 @@ -
-
- - - -
-
- - -
-

StreamNotFound

- User Icon -
- - -
- - - -
- {{errorMessage}} -
- -
- - - - -
-
- - -
-
diff --git a/userAndAdvertiser/src/app/beforeConnexion/login/page-login/page-login.component.scss b/userAndAdvertiser/src/app/beforeConnexion/login/page-login/page-login.component.scss deleted file mode 100644 index 8924202..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/login/page-login/page-login.component.scss +++ /dev/null @@ -1,271 +0,0 @@ -html { - background-color: #56baed; -} - -body { - font-family: "Poppins", sans-serif; - height: 100vh; -} - -a { - color: #5E89FF; - display:inline-block; - text-decoration: none; - font-weight: 400; -} - -h2 { - text-align: center; - font-size: 16px; - font-weight: 600; - text-transform: uppercase; - display:inline-block; - margin: 40px 8px 10px 8px; - color: #cccccc; -} - - - -/* STRUCTURE */ - -.wrapper { - display: flex; - align-items: center; - flex-direction: column; - justify-content: center; - width: 100%; - min-height: 80%; - padding: 20px; -} - -#formContent { - -webkit-border-radius: 10px 10px 10px 10px; - border-radius: 10px 10px 10px 10px; - background: #fff; - padding: 30px; - width: 90%; - max-width: 450px; - position: relative; - padding: 0px; - -webkit-box-shadow: 0 30px 60px 0 rgba(0,0,0,0.3); - box-shadow: 0 30px 60px 0 rgba(0,0,0,0.3); - text-align: center; -} - -#formFooter { - background-color: #f6f6f6; - border-top: 1px solid #dce8f1; - padding: 25px; - text-align: center; - -webkit-border-radius: 0 0 10px 10px; - border-radius: 0 0 10px 10px; -} - - - -/* TABS */ - -h2.inactive { - color: #cccccc; -} - -h2.active { - color: #0d0d0d; - border-bottom: 2px solid #5fbae9; -} - - - -/* FORM TYPOGRAPHY*/ - -input[type=button], input[type=submit], input[type=reset] { - background-color: #5E89FF; - border: none; - color: white; - padding: 15px 80px; - text-align: center; - text-decoration: none; - display: inline-block; - text-transform: uppercase; - font-size: 13px; - -webkit-box-shadow: 0 10px 30px 0 rgba(95,186,233,0.4); - box-shadow: 0 10px 30px 0 rgba(95,186,233,0.4); - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; - margin: 5px 20px 40px 20px; - -webkit-transition: all 0.3s ease-in-out; - -moz-transition: all 0.3s ease-in-out; - -ms-transition: all 0.3s ease-in-out; - -o-transition: all 0.3s ease-in-out; - transition: all 0.3s ease-in-out; -} - -input[type=button]:hover, input[type=submit]:hover, input[type=reset]:hover { - background-color: #39ace7; -} - -input[type=button]:active, input[type=submit]:active, input[type=reset]:active { - -moz-transform: scale(0.95); - -webkit-transform: scale(0.95); - -o-transform: scale(0.95); - -ms-transform: scale(0.95); - transform: scale(0.95); -} - -input[type=text], input[type=password] { - background-color: #f6f6f6; - border: none; - color: #0d0d0d; - padding: 15px 32px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - margin: 5px; - width: 85%; - border: 2px solid #f6f6f6; - -webkit-transition: all 0.5s ease-in-out; - -moz-transition: all 0.5s ease-in-out; - -ms-transition: all 0.5s ease-in-out; - -o-transition: all 0.5s ease-in-out; - transition: all 0.5s ease-in-out; - -webkit-border-radius: 5px 5px 5px 5px; - border-radius: 5px 5px 5px 5px; -} - - - -input[type=text]:focus, input[type=password]:focus { - background-color: #fff; - border-bottom: 2px solid #5fbae9; -} - -input[type=text]::placeholder, input[type=password]::placeholder { - color: #cccccc; -} - -.bg{ - margin: 0; - padding: 0; - height: 100vh; - width: 100vw; - overflow-y: hidden; - overflow-x: hidden; -} - -/* ANIMATIONS */ - -/* Simple CSS3 Fade-in-down Animation */ -.fadeInDown { - -webkit-animation-name: fadeInDown; - animation-name: fadeInDown; - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} - -@-webkit-keyframes fadeInDown { - 0% { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -@keyframes fadeInDown { - 0% { - opacity: 0; - -webkit-transform: translate3d(0, -100%, 0); - transform: translate3d(0, -100%, 0); - } - 100% { - opacity: 1; - -webkit-transform: none; - transform: none; - } -} - -/* Simple CSS3 Fade-in Animation */ -@-webkit-keyframes fadeIn { from { opacity:0; } to { opacity:1; } } -@-moz-keyframes fadeIn { from { opacity:0; } to { opacity:1; } } -@keyframes fadeIn { from { opacity:0; } to { opacity:1; } } - -.fadeIn { - opacity:0; - -webkit-animation:fadeIn ease-in 1; - -moz-animation:fadeIn ease-in 1; - animation:fadeIn ease-in 1; - - -webkit-animation-fill-mode:forwards; - -moz-animation-fill-mode:forwards; - animation-fill-mode:forwards; - - -webkit-animation-duration:1s; - -moz-animation-duration:1s; - animation-duration:1s; -} - -.fadeIn.first { - -webkit-animation-delay: 0.4s; - -moz-animation-delay: 0.4s; - animation-delay: 0.4s; -} - -.fadeIn.second { - -webkit-animation-delay: 0.6s; - -moz-animation-delay: 0.6s; - animation-delay: 0.6s; -} - -.fadeIn.third { - -webkit-animation-delay: 0.8s; - -moz-animation-delay: 0.8s; - animation-delay: 0.8s; -} - -.fadeIn.fourth { - -webkit-animation-delay: 1s; - -moz-animation-delay: 1s; - animation-delay: 1s; -} - -/* Simple CSS3 Fade-in Animation */ -.underlineHover:after { - display: block; - left: 0; - bottom: -10px; - width: 0; - height: 2px; - //background-color: #5E89FF; - background-color: #5E89FF; - content: ""; - transition: width 0.2s; -} - -.underlineHover:hover { - color: #0d0d0d; -} - -.underlineHover:hover:after{ - width: 100%; -} - -h1{ - color: black; -} - -/* OTHERS */ - -*:focus { - outline: none; -} - -#icon { - width:30%; -} diff --git a/userAndAdvertiser/src/app/beforeConnexion/login/page-login/page-login.component.spec.ts b/userAndAdvertiser/src/app/beforeConnexion/login/page-login/page-login.component.spec.ts deleted file mode 100644 index a4ee677..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/login/page-login/page-login.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PageLoginComponent } from './page-login.component'; - -describe('PageLoginComponent', () => { - let component: PageLoginComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PageLoginComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PageLoginComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/beforeConnexion/login/page-login/page-login.component.ts b/userAndAdvertiser/src/app/beforeConnexion/login/page-login/page-login.component.ts deleted file mode 100644 index 555e496..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/login/page-login/page-login.component.ts +++ /dev/null @@ -1,101 +0,0 @@ -import {Component, OnInit} from '@angular/core'; -import {Router} from "@angular/router"; -import {MatDialog} from "@angular/material/dialog"; -import {PopupForgottenPasswordComponent} from "../popup-forgotten-password/popup-forgotten-password.component"; -import {MatSnackBar} from "@angular/material/snack-bar"; -import {ProfilService} from "../../../utils/profil/profil.service"; -import {MessageService} from "../../../utils/message/message.service"; -import {ThemeService} from "../../../utils/theme/theme.service"; - - - -@Component({ - selector: 'app-page-login', - templateUrl: './page-login.component.html', - styleUrls: ['./page-login.component.scss'] -}) -export class PageLoginComponent implements OnInit -{ - email: string = "" ; - password: string = "" ; - hasError: boolean = false; - errorMessage: string = ""; - - - constructor( private messageService: MessageService, - private router: Router, - public themeService: ThemeService, - public dialog: MatDialog, - private snackBar: MatSnackBar, - private profilService: ProfilService) { } - - - ngOnInit(): void {} - - - onSeConnecter(): void - { - this.checkError(); - - if(!this.hasError) - { - let data = { - email: this.email, - hashPass: this.password - }; - this.messageService - .post('user/auth', data) - .subscribe( retour => this.onSeConnecterCallback(retour), err => this.onSeConnecterCallback(err)); - } - } - - - onSeConnecterCallback(retour: any): void - { - if(retour.status !== "success") { - console.log(retour); - this.errorMessage = retour.error.reason; - this.hasError = true; - } - else { - this.profilService.setId(retour.data.id); - this.profilService.setProfileImageUrl(retour.data.profileImageUrl); - if(retour.data.role.name === "user") this.router.navigateByUrl( '/user/search'); - else if(retour.data.role.name === "advertiser") this.router.navigateByUrl( '/advertiser/adList'); - else if(retour.data.role.name === "admin" || retour.data.role.name === "superAdmin") this.router.navigateByUrl( '/admin/userList'); - } - } - - - onForgottenPassword(): void - { - this.dialog - .open(PopupForgottenPasswordComponent, {width: '30%'}) - .afterClosed() - .subscribe(result => { - if((result !== null) && (result !== undefined)) - { - const config = { duration: 5000, panelClass: "custom-class" }; - this.snackBar.open( "Un mail de réinitialisation de mot de passe vous a été envoyé.", "", config); - } - }); - } - - - checkError(): void - { - if(this.email === "") { - this.errorMessage = "Veuillez remplir le champ email" ; - this.hasError = true; - } - else if(this.password === "") { - this.errorMessage = "Veuillez remplir le champ mot de passe" ; - this.hasError = true; - } - else { - this.errorMessage = "" ; - this.hasError = false; - } - } - -} diff --git a/userAndAdvertiser/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.html b/userAndAdvertiser/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.html deleted file mode 100644 index c34b58e..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.html +++ /dev/null @@ -1,24 +0,0 @@ -

Récupération du mot de passe

- -
- - -
- - Email - - -
- - -
- {{errorMessage}} -
- - - - - - - - diff --git a/userAndAdvertiser/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.scss b/userAndAdvertiser/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.scss deleted file mode 100644 index fa75013..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.scss +++ /dev/null @@ -1,12 +0,0 @@ -h4 { - text-align: center; -} - -.myDiv { - text-align: center; - font-size: small; -} - -.myError { - text-align: center; -} diff --git a/userAndAdvertiser/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.spec.ts b/userAndAdvertiser/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.spec.ts deleted file mode 100644 index ebf101c..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PopupForgottenPasswordComponent } from './popup-forgotten-password.component'; - -describe('PopupForgottenPasswordComponent', () => { - let component: PopupForgottenPasswordComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PopupForgottenPasswordComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PopupForgottenPasswordComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.ts b/userAndAdvertiser/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.ts deleted file mode 100644 index 1ff70ce..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/login/popup-forgotten-password/popup-forgotten-password.component.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Component } from '@angular/core'; -import {MatDialogRef} from "@angular/material/dialog"; - - - -@Component({ - selector: 'app-popup-forgotten-password', - templateUrl: './popup-forgotten-password.component.html', - styleUrls: ['./popup-forgotten-password.component.scss'] -}) -export class PopupForgottenPasswordComponent -{ - email: string; - hasError: boolean = false; - errorMessage: string = ""; - - - constructor(public dialogRef: MatDialogRef) {} - - - // Click sur valider - onValidate() - { - if(this.email.length === 0) { - this.errorMessage = "Veuillez remplir le champ 'email'." ; - this.hasError = true; - } - else if(!this.isValidEmail(this.email)) { - this.errorMessage = "Email invalide." ; - this.hasError = true; - } - else { - this.errorMessage = "" ; - this.hasError = false; - this.dialogRef.close(true); - } - } - - - // Indique si email a bien le format d'un email - isValidEmail(email): boolean - { - let re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; - return re.test(email); - } - -} diff --git a/userAndAdvertiser/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.html b/userAndAdvertiser/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.html deleted file mode 100644 index 2a7c484..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Centres d'intérêt - - - - - - - {{interest}} - - - - - - - - - - - - {{interest}} - - - - - - diff --git a/userAndAdvertiser/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.scss b/userAndAdvertiser/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/userAndAdvertiser/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.spec.ts b/userAndAdvertiser/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.spec.ts deleted file mode 100644 index 9917b1a..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { InputInterestsRegisterComponent } from './input-interests-register.component'; - -describe('InputInterestsRegisterComponent', () => { - let component: InputInterestsRegisterComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ InputInterestsRegisterComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(InputInterestsRegisterComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.ts b/userAndAdvertiser/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.ts deleted file mode 100644 index 8dba84e..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/register/input-interests-register/input-interests-register.component.ts +++ /dev/null @@ -1,121 +0,0 @@ -import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core'; -import {COMMA, ENTER} from "@angular/cdk/keycodes"; -import {FormControl} from "@angular/forms"; -import {Observable} from "rxjs"; -import {map, startWith} from "rxjs/operators"; -import {MatChipInputEvent} from "@angular/material/chips"; -import {MatAutocompleteSelectedEvent} from "@angular/material/autocomplete"; -import {MessageService} from "../../../utils/message/message.service"; - - - -@Component({ - selector: 'app-input-interests-register', - templateUrl: './input-interests-register.component.html', - styleUrls: ['./input-interests-register.component.scss'] -}) -export class InputInterestsRegisterComponent implements OnInit -{ - selectable = true; - removable = true; - separatorKeysCodes: number[] = [ENTER, COMMA]; - formControl = new FormControl(); - filteredInterests: Observable; - @Input() myInterests: string[] = []; - allInterests: string[] = []; - @Output() eventEmitter = new EventEmitter(); - @ViewChild('tagInput') tagInput: ElementRef; - interestsNotSelected: string[] = []; - - - constructor( private messageService: MessageService ) {} - - - ngOnInit(): void - { - this.filteredInterests = this.formControl.valueChanges.pipe( - startWith(null), - map((fruit: string | null) => fruit ? this._filter(fruit) : this.interestsNotSelected.slice())); - - this.messageService - .get("misc/getInterests") - .subscribe( retour => { - - if(retour.status !== "success") { - console.log(retour); - } - else { - this.allInterests = []; - for(let elt of retour.data) - { - this.allInterests.push(elt.interest); - this.interestsNotSelected.push(elt.interest); - } - } - }); - } - - - add(event: MatChipInputEvent): void - { - const value = (event.value || '').trim(); - const index = this.interestsNotSelected.indexOf(value); - if (value && (index !== -1) && (!this.myInterests.includes(value))) - { - this.myInterests.push(value); - event.chipInput!.clear(); - this.formControl.setValue(null); - this.eventEmitter.emit(this.myInterests); - this.interestsNotSelected.splice(index, 1); - } - } - - - remove(interest: string): void - { - // supprimer 'interest' de 'myInterest' - const index = this.myInterests.indexOf(interest); - if (index >= 0) this.myInterests.splice(index, 1); - this.eventEmitter.emit(this.myInterests); - - // remmettre 'interest' dans 'interestsNotSelected' - if(!this.interestsNotSelected.includes(interest)) - { - const indexOfAutres = this.interestsNotSelected.indexOf("Autres"); - if(indexOfAutres !== -1) - { - this.interestsNotSelected.splice(indexOfAutres, 1); - if(interest !== "Autres") this.interestsNotSelected.push(interest); - this.interestsNotSelected.sort(); - this.interestsNotSelected.push("Autres"); - } - else { - this.interestsNotSelected.push(interest); - if(interest !== "Autres") this.interestsNotSelected.sort(); - } - } - } - - - selected(event: MatAutocompleteSelectedEvent): void - { - const value = event.option.viewValue; - if(!this.myInterests.includes(value)) - { - this.myInterests.push(value); - const index = this.interestsNotSelected.indexOf(value); - this.interestsNotSelected.splice(index, 1); - } - this.tagInput.nativeElement.value = ''; - this.formControl.setValue(null); - this.eventEmitter.emit(this.myInterests); - } - - - private _filter(value: string): string[] - { - const filterValue = value.toLowerCase(); - return this.interestsNotSelected.filter(fruit => fruit.toLowerCase().includes(filterValue)); - } - -} diff --git a/userAndAdvertiser/src/app/beforeConnexion/register/page-register/page-register.component.html b/userAndAdvertiser/src/app/beforeConnexion/register/page-register/page-register.component.html deleted file mode 100644 index fb6e3ac..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/register/page-register/page-register.component.html +++ /dev/null @@ -1,162 +0,0 @@ -
-
- - - - - - - - - -
- - - Utilisateur standard    - Annonceur - - - -
- -
-
-
- - - - -
- - - - -
- {{errorMessage}} -
- - -
- - -
-
-
- -
- -
-
- - - - - - - -
-
- - -
-

Compte

- - - - Pseudo - - -
- - - - Mot de passe - - -
- - - - Confirmation mot de passe - - -
- - -
-

Informations personelles

- - - - Email - - -
- - - - Homme     - Femme - -

- - - - Date de naissance - - - - - -
- -
-
- - - - - - - - - - - Entreprise - - -
- - - - Pseudo - - -
- - - - Email - - -
- - - - Mot de passe - - -
- - - - Confirmation mot de passe - - - -
diff --git a/userAndAdvertiser/src/app/beforeConnexion/register/page-register/page-register.component.scss b/userAndAdvertiser/src/app/beforeConnexion/register/page-register/page-register.component.scss deleted file mode 100644 index 5f0dc53..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/register/page-register/page-register.component.scss +++ /dev/null @@ -1,47 +0,0 @@ -.myContainer { - width: 100vw; - height: 100vh; -} - - -mat-stepper { - width: 60%; - margin: 10vh auto; - border: solid 1px black; - border-radius: 20px; -} - - -.leftCol { - border-right: solid 1px #dcdcdc; -} - - -.myRow { - margin: 15px 0px 15px 0px; -} -.myLabel { - text-align: right; - padding: 0px 5px 0px 0px; - margin: 0px; - font-weight: bold; -} -.myValue { - text-align: left; - padding: 0px 0px 0px 5px; - margin: 0px; -} - - -// ------------------------------------------------------------------------- - - -::ng-deep .mat-radio-inner-circle { - color: black !important; - background-color: black !important; -} - -::ng-deep .mat-radio-outer-circle{ - color: black !important; - border: solid 1px gray !important; -} diff --git a/userAndAdvertiser/src/app/beforeConnexion/register/page-register/page-register.component.spec.ts b/userAndAdvertiser/src/app/beforeConnexion/register/page-register/page-register.component.spec.ts deleted file mode 100644 index 5cff194..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/register/page-register/page-register.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PageRegisterComponent } from './page-register.component'; - -describe('PageRegisterComponent', () => { - let component: PageRegisterComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PageRegisterComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PageRegisterComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/beforeConnexion/register/page-register/page-register.component.ts b/userAndAdvertiser/src/app/beforeConnexion/register/page-register/page-register.component.ts deleted file mode 100644 index 788c8be..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/register/page-register/page-register.component.ts +++ /dev/null @@ -1,134 +0,0 @@ -import { Component } from '@angular/core'; -import {PopupConfirmationComponent} from "../popup-confirmation/popup-confirmation.component"; -import {MessageService} from "../../../utils/message/message.service"; -import {Router} from "@angular/router"; -import {MatDialog} from "@angular/material/dialog"; -import {ThemeService} from "../../../utils/theme/theme.service"; - - - -@Component({ - selector: 'app-page-register', - templateUrl: './page-register.component.html', - styleUrls: ['./page-register.component.scss'] -}) -export class PageRegisterComponent -{ - password: string = ""; - confirmPassword: string = ""; - hasError: boolean = false; - errorMessage: string = ""; - user = { - _id: "", - login: "", - hashPass: "", - email: "", - role: { - name: "user", - permission: 0, - isAccepted: false, - }, - profileImageUrl: "", - dateOfBirth: null, - gender: "man", - interests: [], - company: "", - isActive: true, - createdAt: new Date(), - updatedAt: new Date(), - lastConnexion: null - }; - - - constructor( private messageService: MessageService, - private router: Router, - public dialog: MatDialog, - public themeService: ThemeService ) { } - - - // Envoie de l'utilisateur au backend - onEnregistrer(): void - { - this.checkField(); - if(!this.hasError) - { - let data: any = Object.assign({}, this.user); - if(this.user.role.name === "user") data.role = "user" ; - else data.role = "advertiser"; - data.hashPass = this.password; - this.messageService - .post('user/create', data) - .subscribe(retour => this.onEnregistrerCallback(retour), err => this.onEnregistrerCallback(err)); - } - } - - - // Gestion de la réponse du backend - onEnregistrerCallback(retour): void - { - if(retour.status !== "success") { - console.log(retour); - } - else - { - const config = { - width: '25%', - data: {roleName: this.user.role.name} - }; - this.dialog - .open(PopupConfirmationComponent, config) - .afterClosed() - .subscribe(result => this.router.navigateByUrl( '/login' )); - } - } - - - // Check les champs saisies par l'utilisateur - checkField(): void - { - if((this.user.role.name === 'advertiser') && (this.user.company.length === 0)) { - this.errorMessage = "Veuillez remplir le champ 'entreprise'."; - this.hasError = true; - } - else if(this.user.login.length === 0) { - this.errorMessage = "Veuillez remplir le champ 'pseudo'."; - this.hasError = true; - } - else if(this.user.email.length === 0) { - this.errorMessage = "Veuillez remplir le champ 'email'."; - this.hasError = true; - } - else if(!this.isValidEmail(this.user.email)) { - this.errorMessage = "Email invalide."; - this.hasError = true; - } - else if(this.password.length === 0) { - this.errorMessage = "Veuillez remplir le champ 'mot de passe'."; - this.hasError = true; - } - else if(this.password !== this.confirmPassword) { - this.errorMessage = "Le mot de passe est différent de sa confirmation."; - this.hasError = true; - } - else { - this.errorMessage = "" ; - this.hasError = false; - } - } - - - // Indique si email a bien le format d'un email - isValidEmail(email): boolean - { - let re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; - return re.test(email); - } - - - // Récupère la liste des centres d'intérets (car celle-ci est remplie à l'aide d'un component intermédiaire) - onEventInputInterests(myInterets: string[]): void - { - this.user.interests = myInterets; - } - -} diff --git a/userAndAdvertiser/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.html b/userAndAdvertiser/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.html deleted file mode 100644 index 1cd51fe..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.html +++ /dev/null @@ -1,11 +0,0 @@ -

- Votre inscription a bien été effectuée. -

- -

- Votre inscription est en cours de validation. -

- -
- -
diff --git a/userAndAdvertiser/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.scss b/userAndAdvertiser/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.scss deleted file mode 100644 index 85730e0..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.scss +++ /dev/null @@ -1,7 +0,0 @@ -p { - font-size: small; -} - -div { - font-size: small; -} diff --git a/userAndAdvertiser/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.spec.ts b/userAndAdvertiser/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.spec.ts deleted file mode 100644 index d6f9908..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PopupConfirmationComponent } from './popup-confirmation.component'; - -describe('PopupConfirmationComponent', () => { - let component: PopupConfirmationComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PopupConfirmationComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PopupConfirmationComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.ts b/userAndAdvertiser/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.ts deleted file mode 100644 index 59e3325..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/register/popup-confirmation/popup-confirmation.component.ts +++ /dev/null @@ -1,13 +0,0 @@ -import {Component, Inject} from '@angular/core'; -import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog"; - -@Component({ - selector: 'app-popup-confirmation', - templateUrl: './popup-confirmation.component.html', - styleUrls: ['./popup-confirmation.component.scss'] -}) -export class PopupConfirmationComponent -{ - constructor( public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data) {} -} diff --git a/userAndAdvertiser/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.html b/userAndAdvertiser/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.html deleted file mode 100644 index d4ad9f5..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.html +++ /dev/null @@ -1,40 +0,0 @@ - -
- -
- - - - - - -
- -
diff --git a/userAndAdvertiser/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.scss b/userAndAdvertiser/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.scss deleted file mode 100644 index e1fefaa..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.scss +++ /dev/null @@ -1,79 +0,0 @@ -.navbar { - background-color: black; - height: 60px; - font-size: medium; - color: white; -} - - -.navbar-expand-lg { - border-bottom: solid; - border-color: white; - border-bottom-width: 2px; -} - - -// PolyNotFound -.navbar-brand { - font-family: cursive; - font-weight: bold; - font-size: x-large; - margin-left: 15px; - color: white; -} - - -// Recherche, Mes Playlists, Historique -.nav-link { - color: white; -} -.nav-link:hover { - color: grey; -} - - -// Bonton deconnexion -.btnDeconnexion { - font-size: medium; - margin: 0px 10px 0px 10px -} -.btnDeconnexion:hover { - color: grey; -} - - -.monLi { - margin: 0px 10px 0px 10px; -} - - -img { - border: solid 2px white; - border-radius: 50px; - margin: 0px 10px 0px 15px; - width: 40px; - height: 40px; -} -img:hover { - cursor: pointer; -} - - -// -------------------------------------------------------------------- - - -::ng-deep .mat-slide-toggle-thumb { - background-color: #c8c8c8; -} - -::ng-deep .mat-slide-toggle-bar { - background-color: #ffffff; -} - -::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-thumb { - background-color: #ffffff; -} - -::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-bar { - background-color: #646464; -} diff --git a/userAndAdvertiser/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.spec.ts b/userAndAdvertiser/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.spec.ts deleted file mode 100644 index f3f7f27..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { NavbarBeforeConnexionComponent } from './navbar-before-connexion.component'; - -describe('NavbarBeforeConnexionComponent', () => { - let component: NavbarBeforeConnexionComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ NavbarBeforeConnexionComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(NavbarBeforeConnexionComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.ts b/userAndAdvertiser/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.ts deleted file mode 100644 index 4a3f05e..0000000 --- a/userAndAdvertiser/src/app/beforeConnexion/utils/navbar-before-connexion/navbar-before-connexion.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import {Component, Input} from '@angular/core'; - -@Component({ - selector: 'app-navbar-before-connexion', - templateUrl: './navbar-before-connexion.component.html', - styleUrls: ['./navbar-before-connexion.component.scss'] -}) -export class NavbarBeforeConnexionComponent -{ - @Input() pour = "login"; -} diff --git a/userAndAdvertiser/src/app/user/history/page-history-user/page-history-user.component.html b/userAndAdvertiser/src/app/user/history/page-history-user/page-history-user.component.html deleted file mode 100644 index 97f7344..0000000 --- a/userAndAdvertiser/src/app/user/history/page-history-user/page-history-user.component.html +++ /dev/null @@ -1,70 +0,0 @@ -
-
- - -

- - - -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Aperçu -
- - -
-
Titre {{video.title}} Date - {{video.date | date:'dd/LL/YYYY à HH:mm:ss'}} - Source {{video.source}} Action - -
Aucune vidéo ne correspond au filtre: "{{input.value}}"
-
- -
-

- -
-
diff --git a/userAndAdvertiser/src/app/user/history/page-history-user/page-history-user.component.scss b/userAndAdvertiser/src/app/user/history/page-history-user/page-history-user.component.scss deleted file mode 100644 index bbd894d..0000000 --- a/userAndAdvertiser/src/app/user/history/page-history-user/page-history-user.component.scss +++ /dev/null @@ -1,46 +0,0 @@ -.myContainer { - max-width: 100vw; - height: 100vh; - overflow-x: hidden; -} - -table { - width: 80%; - margin: 0 auto; -} - - -th.mat-sort-header-sorted { - color: black; -} - - -input { - width: 35%; - font-size: large; -} - -// ------------------------------------------------------- - -.imgsContainer { - position: relative; - width: 20vw; - height: 15vh; - cursor: pointer; -} - -.imgPlay { - position: absolute; - margin-left: 9vw; - width: 3vw; - margin-top: 5vh; - height: 6vh; - padding: 0px 0px 0px 0px; -} - -.imgVideo { - border: solid 1px black; - width: 20vw; - height: 15vh; - padding: 0px 0px 0px 0px; -} diff --git a/userAndAdvertiser/src/app/user/history/page-history-user/page-history-user.component.spec.ts b/userAndAdvertiser/src/app/user/history/page-history-user/page-history-user.component.spec.ts deleted file mode 100644 index 9fd31c3..0000000 --- a/userAndAdvertiser/src/app/user/history/page-history-user/page-history-user.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PageHistoryUserComponent } from './page-history-user.component'; - -describe('PageHistoriqueComponent', () => { - let component: PageHistoryUserComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PageHistoryUserComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PageHistoryUserComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/user/history/page-history-user/page-history-user.component.ts b/userAndAdvertiser/src/app/user/history/page-history-user/page-history-user.component.ts deleted file mode 100644 index 5485ec1..0000000 --- a/userAndAdvertiser/src/app/user/history/page-history-user/page-history-user.component.ts +++ /dev/null @@ -1,113 +0,0 @@ -import {AfterViewInit, Component, ViewChild} from '@angular/core'; -import {MatTableDataSource} from "@angular/material/table"; -import {MatSort} from "@angular/material/sort"; -import {MatPaginator} from "@angular/material/paginator"; -import {Router} from "@angular/router"; -import {MessageService} from "../../../utils/message/message.service"; -import {ThemeService} from "../../../utils/theme/theme.service"; - - - -@Component({ - selector: 'app-page-history-user', - templateUrl: './page-history-user.component.html', - styleUrls: ['./page-history-user.component.scss'] -}) -export class PageHistoryUserComponent implements AfterViewInit -{ - displayedColumns: string[] = [ 'aperçu', 'title', 'date', 'source', 'action' ]; - dataSource ; - @ViewChild(MatSort) sort: MatSort; - @ViewChild(MatPaginator) paginator: MatPaginator; - - - constructor( public themeService: ThemeService, - private messageService: MessageService, - private router: Router ) { } - - - // charge la page - ngAfterViewInit(): void - { - this.messageService - .get("user/history") - .subscribe(ret => this.ngAfterViewInitCallback(ret), err => this.ngAfterViewInitCallback(err)); - } - - - ngAfterViewInitCallback(retour: any): void - { - if(retour.status !== "success") { - console.log(retour); - } - else { - const tabVideoHistory = retour.data.map( video => { - return { - _id: video._id, - videoId: video.videoId, - imageUrl: video.imageUrl, - title: video.title, - date: video.watchedDate, - source: video.source, - } - }); - this.dataSource = new MatTableDataSource(tabVideoHistory); - this.dataSource.sort = this.sort; - this.dataSource.paginator = this.paginator; - this.dataSource = this.dataSource; - } - } - - - // Applique le filtre - applyFilter(event: Event): void - { - const filterValue = (event.target as HTMLInputElement).value; - this.dataSource.filter = filterValue.trim().toLowerCase(); - } - - - // Supprime la video - onDelete(video: any): void - { - this.messageService - .put("video/update/"+video._id, { watchedDates: []}) - .subscribe(ret => this.onDeleteCallback(ret, video), err => this.onDeleteCallback(err, video)) - } - - - onDeleteCallback(retour: any, video: any): void - { - if(retour.status !== "success") { - console.log(retour); - } - else { - const index = this.dataSource.data.indexOf(video); - this.dataSource.data.splice(index, 1); - this.dataSource.data = this.dataSource.data; - this.dataSource = this.dataSource; - } - } - - - onVideo(video): void - { - this.messageService - .put("video/update/"+video._id, {watchedDate: true}) - .subscribe(ret => this.onVideoCallback(ret), err => this.onVideoCallback(err)); - - const params = { - videoId: video.videoId, - source: video.source, - from: "history", - }; - this.router.navigate(['/user/watching'], { queryParams: params }); - } - - - onVideoCallback(retour: any): void - { - if(retour.status !== "success") console.log(retour); - } - -} diff --git a/userAndAdvertiser/src/app/user/myPlaylists/page-my-playlists/page-my-playlists.component.html b/userAndAdvertiser/src/app/user/myPlaylists/page-my-playlists/page-my-playlists.component.html deleted file mode 100644 index c92a060..0000000 --- a/userAndAdvertiser/src/app/user/myPlaylists/page-my-playlists/page-my-playlists.component.html +++ /dev/null @@ -1,35 +0,0 @@ -
-
- - -
- -
-
- - - - - - - - - - - - - - - - - - -
- -
-
- -
- -
-
diff --git a/userAndAdvertiser/src/app/user/myPlaylists/page-my-playlists/page-my-playlists.component.scss b/userAndAdvertiser/src/app/user/myPlaylists/page-my-playlists/page-my-playlists.component.scss deleted file mode 100644 index fad665f..0000000 --- a/userAndAdvertiser/src/app/user/myPlaylists/page-my-playlists/page-my-playlists.component.scss +++ /dev/null @@ -1,48 +0,0 @@ -.lightTheme { - border-color: black; -} -.darkTheme { - border-color: white; -} -.myContainer { - text-align: center; - max-width: 100vw; - height: 100vh; - overflow-x: hidden; -} - -// Liste des vidéos ------------------------------------------------- - -.celluleListeVideo { - margin: 0px 0px 0px 0px; -} - -// Liste des playlists --------------------------------------------- - -.celluleListePlaylist { - margin: 0px 0px 0px 0px; -} - -// Pub ------------------------------------------------------------- - -.cellulePub { - padding: 0px 10px 0px 10px; - width: 100%; - text-align: center; - justify-content: center; -} - -.conteneurPub { - //height: 85vh; - text-align: center; - justify-content: center; - vertical-align: middle; - display: block; - width: 75%; - margin-left: auto; - margin-right: auto; - position: absolute; - top: 50%; - -ms-transform: translateY(-50%); - transform: translateY(-50%); -} diff --git a/userAndAdvertiser/src/app/user/myPlaylists/page-my-playlists/page-my-playlists.component.spec.ts b/userAndAdvertiser/src/app/user/myPlaylists/page-my-playlists/page-my-playlists.component.spec.ts deleted file mode 100644 index 2dba23b..0000000 --- a/userAndAdvertiser/src/app/user/myPlaylists/page-my-playlists/page-my-playlists.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PageMyPlaylistsComponent } from './page-my-playlists.component'; - -describe('PageMesPlaylistsComponent', () => { - let component: PageMyPlaylistsComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PageMyPlaylistsComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PageMyPlaylistsComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/user/myPlaylists/page-my-playlists/page-my-playlists.component.ts b/userAndAdvertiser/src/app/user/myPlaylists/page-my-playlists/page-my-playlists.component.ts deleted file mode 100644 index 0b94523..0000000 --- a/userAndAdvertiser/src/app/user/myPlaylists/page-my-playlists/page-my-playlists.component.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import {HttpParams} from "@angular/common/http"; -import {ThemeService} from "../../../utils/theme/theme.service"; -import {MessageService} from "../../../utils/message/message.service"; - - - -@Component({ - selector: 'app-page-my-playlists', - templateUrl: './page-my-playlists.component.html', - styleUrls: ['./page-my-playlists.component.scss'] -}) -export class PageMyPlaylistsComponent implements OnInit -{ - ad; // pub - playlist: any; // la playlist sélectionnée - - - constructor( public themeService: ThemeService, - private messageService: MessageService ) { } - - - ngOnInit(): void - { - let params = new HttpParams(); - params = params.append("quantity", 1); - this.messageService - .get("user/ad", params) - .subscribe(ret => this.adCallback(ret), err => this.adCallback(err)); - } - - - adCallback(retour: any): void - { - if(retour.status !== "success") { - console.log(retour); - } - else { - this.ad = retour.data[0]; - } - } - - - transmitPlaylistToVideoList(playlist): void - { - if ((playlist === null) || (playlist === undefined)) { - this.playlist = playlist; - } - else { - this.messageService - .get("playlist/findOne/" + playlist.id) - .subscribe(ret => this.afterReceivingPlaylistWithVideo(ret, playlist), err => this.afterReceivingPlaylistWithVideo(err, playlist)); - } - } - - - afterReceivingPlaylistWithVideo(retour: any, playlist): void - { - if(retour.status !== "success") { - console.log(retour); - this.playlist = playlist; - } - else { - this.playlist = retour.data; - } - } - -} diff --git a/userAndAdvertiser/src/app/user/myPlaylists/playlist-list/playlist-list.component.html b/userAndAdvertiser/src/app/user/myPlaylists/playlist-list/playlist-list.component.html deleted file mode 100644 index 2185a77..0000000 --- a/userAndAdvertiser/src/app/user/myPlaylists/playlist-list/playlist-list.component.html +++ /dev/null @@ -1,48 +0,0 @@ -
-
- - -
-
- -
-
- - - - -
-
-
- -
-
- -
-
- {{playlist.name}}
- {{playlist.videoIds.length}} vidéo - {{playlist.videoIds.length}} vidéos -
-
- -
-
- -
-
-
- - - - -
- -
- -
-
diff --git a/userAndAdvertiser/src/app/user/myPlaylists/playlist-list/playlist-list.component.scss b/userAndAdvertiser/src/app/user/myPlaylists/playlist-list/playlist-list.component.scss deleted file mode 100644 index 0376ee3..0000000 --- a/userAndAdvertiser/src/app/user/myPlaylists/playlist-list/playlist-list.component.scss +++ /dev/null @@ -1,94 +0,0 @@ -.myContainer { - background-color: white ; - text-align: center; - width: 35vw; - margin: 1vh 0vh 3vh 0vh; - padding: 0px; - border: solid 2px black; - border-radius: 10px; - box-shadow: 10px 5px 5px black; -} - -// SearchBar ----------------------------------------------------------- - -.searchBarContainer { - text-align: center; - margin: 0px 0px 0px 0px; - padding: 10px 0px 10px 0px; - //background-color: #dcdcdc; - background: linear-gradient(top, rgba(38,38,38,0.8), #e6e6e6 25%, #fff 38%, #c5c5c5 87%, rgba(38,38,38,0.8)); - background: -webkit-linear-gradient(top, #c5c5c5, #e6e6e6 25%, #fff 38%, #c5c5c5 87%, #c5c5c5); - font-size: large; - border-bottom: solid 1px black; - border-top-left-radius: 10px; - border-top-right-radius: 10px; -} - -.inputSearchBar { - width: 70%; - border-radius: 5px; -} - - -// Liste des playlists ------------------------------------------------- - -.playlistListContainer { - max-width: 100%; - height: 60vh; - overflow-y: scroll; - padding: 0px; - overflow-x: hidden; -} - -.playlistContainer { - max-width: 100%; - padding: 0px; - overflow-x: hidden; -} - - -.btnPlaylist { - background-color: white; - padding: 20px; - border-bottom: solid 1px black; - //width: 100%; - width: 35vw; - overflow-x: hidden; -} -.btnPlaylist:hover { - background-color: #f0f0f0; -} - -.btnPlaylistFocus { - background-color: #e6e6e6; -} -.btnPlaylistFocus:hover { - background-color: #e6e6e6; -} - - -.playListCount { - color: gray; - font-style: italic; -} - -// Bouton creer playlist ------------------------------------------------- - -.btnCreerPlaylistContainer { - margin: 0px 0px 0px 0px; - background-color: #dcdcdc; - font-size: large; - border-top: solid 1px black; - border-bottom-left-radius: 10px; - border-bottom-right-radius: 10px; -} - -.btnCreerPlaylist { - margin: 0px 0px 0px 0px; - border-bottom-left-radius: 10px; - border-bottom-right-radius: 10px; - background: linear-gradient(top, rgba(38,38,38,0.8), #e6e6e6 25%, #fff 38%, #c5c5c5 87%, rgba(38,38,38,0.8)); - background: -webkit-linear-gradient(top, #c5c5c5, #e6e6e6 25%, #fff 38%, #c5c5c5 87%, #c5c5c5); - //background: linear-gradient(180deg, #e6e6e6 0%, rgba(0,0,0,0.25) 49%, rgba(38,38,38,0.6) 51%, rgba(0,0,0,0.25) 100%); -} - diff --git a/userAndAdvertiser/src/app/user/myPlaylists/playlist-list/playlist-list.component.spec.ts b/userAndAdvertiser/src/app/user/myPlaylists/playlist-list/playlist-list.component.spec.ts deleted file mode 100644 index 9308f2c..0000000 --- a/userAndAdvertiser/src/app/user/myPlaylists/playlist-list/playlist-list.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PlaylistListComponent } from './playlist-list.component'; - -describe('PlaylistListComponent', () => { - let component: PlaylistListComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PlaylistListComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PlaylistListComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/user/myPlaylists/playlist-list/playlist-list.component.ts b/userAndAdvertiser/src/app/user/myPlaylists/playlist-list/playlist-list.component.ts deleted file mode 100644 index 9d9dbc2..0000000 --- a/userAndAdvertiser/src/app/user/myPlaylists/playlist-list/playlist-list.component.ts +++ /dev/null @@ -1,161 +0,0 @@ -import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; -import {MatDialog} from "@angular/material/dialog"; -import {MatSnackBar} from "@angular/material/snack-bar"; -import {PopupCreateOrUpdatePlaylistComponent} from "../popup-create-or-update-playlist/popup-create-or-update-playlist.component"; -import {PopupDeletePlaylistComponent} from "../popup-delete-playlist/popup-delete-playlist.component"; -import {ThemeService} from "../../../utils/theme/theme.service"; -import {MessageService} from "../../../utils/message/message.service"; - - - -@Component({ - selector: 'app-playlist-list', - templateUrl: './playlist-list.component.html', - styleUrls: ['./playlist-list.component.scss'] -}) -export class PlaylistListComponent implements OnInit -{ - allPlaylists: any[] = []; // toutes les playlists - @Output() eventEmitter = new EventEmitter(); // pour envoyer au parent la playlist selectionner - search: string = "" ; // contenu de la barre de recherche - tabPlaylist: any[] = []; // playlist affichées - playlistFocusedOn: any; - - - constructor( public themeService: ThemeService, - public dialog: MatDialog, - public snackBar: MatSnackBar, - private messageService: MessageService ) { } - - - ngOnInit(): void - { - this.messageService - .get("playlist/findAll") - .subscribe( retour => this.ngOnInitCallback(retour), err => this.ngOnInitCallback(err) ); - } - - - ngOnInitCallback(retour: any): void - { - if(retour.status !== "success") { - console.log(retour); - } else { - const aux = retour.data.filter( x => x.isActive === true); - this.allPlaylists = aux.map(x => { - x["_id"] = x.id ; - return x; - }); - this.tabPlaylist = [].concat(this.allPlaylists); - } - } - - - // s'execute lorsqu'on écrit sur la barre de recherche - whileSearch() - { - this.tabPlaylist = []; - for(let playlist of this.allPlaylists) - { - if(playlist.name.includes(this.search)) this.tabPlaylist.push(playlist); - } - } - - - // click sur créer playlist - onCreatePlaylist(): void - { - const config = { - data: { - action: "create", - tabPlaylist: this.tabPlaylist, - } - }; - this.dialog - .open(PopupCreateOrUpdatePlaylistComponent, config ) - .afterClosed() - .subscribe(playlist => { - - const config = { duration: 1500, panelClass: "custom-class" }; - if((playlist === null) || (playlist === undefined)) { - this.snackBar.open("Opération annulée", "", config); - } - else { - playlist["_id"] = playlist.id; - this.allPlaylists.push(playlist); - this.tabPlaylist.push(playlist); - this.snackBar.open(`La playlist '${playlist.name}' a bien été créée ✔`, "", config); - } - }); - } - - - // click sur update playlist - onUpdatePlaylist(playlistToUpdate): void - { - const config = { - data: { - action: "update", - tabPlaylist: this.tabPlaylist, - playlistName: playlistToUpdate.name, - playlistId: playlistToUpdate._id - } - }; - this.dialog - .open(PopupCreateOrUpdatePlaylistComponent, config) - .afterClosed() - .subscribe(newName => { - - const config = { duration: 1500, panelClass: "custom-class" }; - if((newName === null) || (newName === undefined)) { - this.snackBar.open("Opération annulée", "", config); - } - else { - let index = this.allPlaylists.findIndex( elt => (elt._id === playlistToUpdate._id)); - this.allPlaylists[index].name = newName; - index = this.tabPlaylist.findIndex( elt => (elt._id === playlistToUpdate._id)); - this.tabPlaylist[index].name = newName; - this.snackBar.open(`La playlist '${playlistToUpdate.name}' a bien été mise à jour ✔`, "", config); - this.eventEmitter.emit(this.tabPlaylist[index]); - this.playlistFocusedOn = this.tabPlaylist[index] - } - }); - } - - - // click sur supprimer playlist - onDeletePlaylist(playlist): void - { - const config = {data: playlist}; - this.dialog - .open(PopupDeletePlaylistComponent, config) - .afterClosed() - .subscribe(retour => { - - const config = { duration: 1500, panelClass: "custom-class" }; - if((retour === null) || (retour === undefined)) { - this.snackBar.open("Opération annulée", "", config); - } - else { - let index = this.allPlaylists.indexOf(playlist); - if(index >= 0) this.allPlaylists.splice(index, 1); - - index = this.tabPlaylist.indexOf(playlist); - if(index >= 0) this.tabPlaylist.splice(index, 1); - - this.eventEmitter.emit(null); - this.playlistFocusedOn = null; - this.snackBar.open(`La playlist '${playlist.name}' a bien été suprimée ✔`, "", config); - } - }); - } - - - // retourne la class CSS de conteneur de playlist - getClassOfPlaylistContainer(playlist): string - { - if(playlist === this.playlistFocusedOn) return "row btnPlaylist btnPlaylistFocus" ; - else return "row btnPlaylist" ; - } - -} diff --git a/userAndAdvertiser/src/app/user/myPlaylists/popup-create-or-update-playlist/popup-create-or-update-playlist.component.html b/userAndAdvertiser/src/app/user/myPlaylists/popup-create-or-update-playlist/popup-create-or-update-playlist.component.html deleted file mode 100644 index d88fa34..0000000 --- a/userAndAdvertiser/src/app/user/myPlaylists/popup-create-or-update-playlist/popup-create-or-update-playlist.component.html +++ /dev/null @@ -1,19 +0,0 @@ -
- -
- - Nom de la playlist - - - {{errorMessage}} -
- -
- - -
- -
diff --git a/userAndAdvertiser/src/app/user/myPlaylists/popup-create-or-update-playlist/popup-create-or-update-playlist.component.scss b/userAndAdvertiser/src/app/user/myPlaylists/popup-create-or-update-playlist/popup-create-or-update-playlist.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/userAndAdvertiser/src/app/user/myPlaylists/popup-create-or-update-playlist/popup-create-or-update-playlist.component.spec.ts b/userAndAdvertiser/src/app/user/myPlaylists/popup-create-or-update-playlist/popup-create-or-update-playlist.component.spec.ts deleted file mode 100644 index 640bdbc..0000000 --- a/userAndAdvertiser/src/app/user/myPlaylists/popup-create-or-update-playlist/popup-create-or-update-playlist.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PopupCreateOrUpdatePlaylistComponent } from './popup-create-or-update-playlist.component'; - -describe('PopupCreatePlaylistComponent', () => { - let component: PopupCreateOrUpdatePlaylistComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PopupCreateOrUpdatePlaylistComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PopupCreateOrUpdatePlaylistComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/user/myPlaylists/popup-create-or-update-playlist/popup-create-or-update-playlist.component.ts b/userAndAdvertiser/src/app/user/myPlaylists/popup-create-or-update-playlist/popup-create-or-update-playlist.component.ts deleted file mode 100644 index 1be479b..0000000 --- a/userAndAdvertiser/src/app/user/myPlaylists/popup-create-or-update-playlist/popup-create-or-update-playlist.component.ts +++ /dev/null @@ -1,90 +0,0 @@ -import {Component, Inject, OnInit} from '@angular/core'; -import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog"; -import {MessageService} from "../../../utils/message/message.service"; - - - -@Component({ - selector: 'app-popup-create-or-update-playlist', - templateUrl: './popup-create-or-update-playlist.component.html', - styleUrls: ['./popup-create-or-update-playlist.component.scss'] -}) -export class PopupCreateOrUpdatePlaylistComponent implements OnInit -{ - name: string = "" ; - hasError: boolean = false; - tabNomPlaylist: string[] = []; - errorMessage: string = "" ; - action: string = ""; - - - constructor( public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data, - private messageService: MessageService) { } - - - ngOnInit(): void - { - this.action = this.data.action; - this.tabNomPlaylist = this.data.tabPlaylist.map( playlist0 => playlist0.name ); - if(this.action === "update") this.name = this.data.playlistName; - } - - - onValider(): void - { - this.checkError(); - if(!this.hasError) - { - if(this.action === "create") - { - this.messageService - .post("playlist/create", {name: this.name}) - .subscribe(retour => this.onValiderCallback(retour), err => this.onValiderCallback(err)); - } - else if(this.action === "update") - { - this.messageService - .put("playlist/update/"+this.data.playlistId, {name: this.name}) - .subscribe(retour => this.onValiderCallback(retour), err => this.onValiderCallback(err)); - } - } - } - - - onValiderCallback(retour): void - { - if(retour.status !== "success") { - console.log(retour); - this.dialogRef.close(null); - } - else { - if(this.action === "create") this.dialogRef.close(retour.data); - else if(this.action === "update") this.dialogRef.close(this.name); - } - } - - - checkError(): void - { - if(this.name === "") { - this.errorMessage = "Le nom ne peut pas être vide" ; - this.hasError = true; - } - else if(this.tabNomPlaylist.includes(this.name)){ - this.errorMessage = "Ce nom est déjà utilisé" ; - this.hasError = true; - } - else { - this.hasError = false; - this.errorMessage = "" ; - } - } - - - onAnnuler(): void - { - this.dialogRef.close(null); - } - -} diff --git a/userAndAdvertiser/src/app/user/myPlaylists/popup-delete-playlist/popup-delete-playlist.component.html b/userAndAdvertiser/src/app/user/myPlaylists/popup-delete-playlist/popup-delete-playlist.component.html deleted file mode 100644 index 0335139..0000000 --- a/userAndAdvertiser/src/app/user/myPlaylists/popup-delete-playlist/popup-delete-playlist.component.html +++ /dev/null @@ -1,8 +0,0 @@ - - Êtes-vous sûr de vouloir supprimer {{playlist.name}} ? - - - - - - diff --git a/userAndAdvertiser/src/app/user/myPlaylists/popup-delete-playlist/popup-delete-playlist.component.scss b/userAndAdvertiser/src/app/user/myPlaylists/popup-delete-playlist/popup-delete-playlist.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/userAndAdvertiser/src/app/user/myPlaylists/popup-delete-playlist/popup-delete-playlist.component.spec.ts b/userAndAdvertiser/src/app/user/myPlaylists/popup-delete-playlist/popup-delete-playlist.component.spec.ts deleted file mode 100644 index 83d1cf7..0000000 --- a/userAndAdvertiser/src/app/user/myPlaylists/popup-delete-playlist/popup-delete-playlist.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PopupDeletePlaylistComponent } from './popup-delete-playlist.component'; - -describe('PopupDeletePlaylistComponent', () => { - let component: PopupDeletePlaylistComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PopupDeletePlaylistComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PopupDeletePlaylistComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/user/myPlaylists/popup-delete-playlist/popup-delete-playlist.component.ts b/userAndAdvertiser/src/app/user/myPlaylists/popup-delete-playlist/popup-delete-playlist.component.ts deleted file mode 100644 index dda9f5b..0000000 --- a/userAndAdvertiser/src/app/user/myPlaylists/popup-delete-playlist/popup-delete-playlist.component.ts +++ /dev/null @@ -1,41 +0,0 @@ -import {Component, Inject, OnInit} from '@angular/core'; -import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog"; -import {MessageService} from "../../../utils/message/message.service"; - -@Component({ - selector: 'app-popup-delete-playlist', - templateUrl: './popup-delete-playlist.component.html', - styleUrls: ['./popup-delete-playlist.component.scss'] -}) -export class PopupDeletePlaylistComponent implements OnInit -{ - playlist; - - constructor( public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data, - private messageService: MessageService ) { } - - ngOnInit(): void - { - this.playlist = this.data; - } - - onValidate(): void - { - this.messageService - .delete("playlist/delete/"+this.playlist._id) - .subscribe( retour => this.onValidateCallback(retour), err => this.onValidateCallback(err)); - } - - onValidateCallback(retour: any): void - { - if(retour.status !== "success") { - console.log(retour); - this.dialogRef.close(null); - } - else { - this.dialogRef.close(true); - } - } - -} diff --git a/userAndAdvertiser/src/app/user/myPlaylists/video-list/video-list.component.html b/userAndAdvertiser/src/app/user/myPlaylists/video-list/video-list.component.html deleted file mode 100644 index 1954fee..0000000 --- a/userAndAdvertiser/src/app/user/myPlaylists/video-list/video-list.component.html +++ /dev/null @@ -1,91 +0,0 @@ -
-
- - -
- - -
- - - - {{playlist.name}} - - - - - Aucune playlist selectionnée - - -
- - - - - - -
-
- - -
- - - -
- - - - - - - - - - -
-
- - -
-
-
- - - - - - -
- - - - {{video.title}} - - -
-
- - - -
-
- -
-
- - - - - - -
-
a
-
- -
-
diff --git a/userAndAdvertiser/src/app/user/myPlaylists/video-list/video-list.component.scss b/userAndAdvertiser/src/app/user/myPlaylists/video-list/video-list.component.scss deleted file mode 100644 index e3af7ce..0000000 --- a/userAndAdvertiser/src/app/user/myPlaylists/video-list/video-list.component.scss +++ /dev/null @@ -1,83 +0,0 @@ -.myContainer { - //background-color: white ; - background: linear-gradient(top, rgba(38,38,38,0.8), #e6e6e6 25%, #fff 38%, #c5c5c5 87%, rgba(38,38,38,0.8)); - background: -webkit-linear-gradient(top, #c5c5c5, #e6e6e6 25%, #fff 38%, #c5c5c5 87%, #c5c5c5); - text-align: center; - width: 35vw; - margin: 1vh 0vh 3vh 0vh; - padding: 0px; - border: solid 2px black; - border-radius: 10px; - box-shadow: 10px 5px 5px black; -} - -// TopBorder -------------------------------------------------------- - -.topBorder { - margin: 0px 0px 0px 0px; - //background-color: #dcdcdc; - background: linear-gradient(top, rgba(38,38,38,0.8), #e6e6e6 25%, #fff 38%, #c5c5c5 87%, rgba(38,38,38,0.8)); - background: -webkit-linear-gradient(top, #c5c5c5, #e6e6e6 25%, #fff 38%, #c5c5c5 87%, #c5c5c5); - text-align: left; - padding: 5px 0px 5px 5px; - border-bottom: solid 1px black; - border-top-left-radius: 10px; - border-top-right-radius: 10px; -} - -.spanPlayListTitle { - font-size: large; - font-weight: bold; -} - -// Liste des videos ------------------------------------------------ - -.listVideoContainer { - height: 65vh; - background-color: white; - padding: 0px; - overflow-y: scroll; -} - -.videoContainer { - border-bottom: solid 1px black; - padding: 15px 0px 15px 0px; - width: 100%; -} - -.imgsContainer { - position: relative; - width: 20vw; - height: 15vh; - cursor: pointer; -} - -.imgPlay { - position: absolute; - margin-left: 9vw; - width: 3vw; - margin-top: 5vh; - height: 6vh; - padding: 0px 0px 0px 0px; -} - -.imgVideo { - border: solid 1px black; - width: 20vw; - height: 15vh; - padding: 0px 0px 0px 0px; -} - -// BottomBorder -------------------------------------------------------- - -.bottomBorder { - margin: 0px 0px 0px 0px; - //background-color: #dcdcdc; - background: linear-gradient(top, rgba(38,38,38,0.8), #e6e6e6 25%, #fff 38%, #c5c5c5 87%, rgba(38,38,38,0.8)); - background: -webkit-linear-gradient(top, #c5c5c5, #e6e6e6 25%, #fff 38%, #c5c5c5 87%, #c5c5c5); - border-top: solid 1px black; - border-bottom: solid 1px black; - font-size: large; - border-bottom-left-radius: 10px; - border-bottom-right-radius: 10px; -} diff --git a/userAndAdvertiser/src/app/user/myPlaylists/video-list/video-list.component.spec.ts b/userAndAdvertiser/src/app/user/myPlaylists/video-list/video-list.component.spec.ts deleted file mode 100644 index 403cc76..0000000 --- a/userAndAdvertiser/src/app/user/myPlaylists/video-list/video-list.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { VideoListComponent } from './video-list.component'; - -describe('VideoListComponent', () => { - let component: VideoListComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ VideoListComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(VideoListComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/user/myPlaylists/video-list/video-list.component.ts b/userAndAdvertiser/src/app/user/myPlaylists/video-list/video-list.component.ts deleted file mode 100644 index 25c4edb..0000000 --- a/userAndAdvertiser/src/app/user/myPlaylists/video-list/video-list.component.ts +++ /dev/null @@ -1,92 +0,0 @@ -import {Component, Input, OnChanges, SimpleChanges} from '@angular/core'; -import {AddVideoToPlaylistsService} from "../../utils/services/addVideoToPlaylists/add-video-to-playlists.service"; -import {MatSnackBar} from "@angular/material/snack-bar"; -import {Router} from "@angular/router"; -import {MessageService} from "../../../utils/message/message.service"; -import {ThemeService} from "../../../utils/theme/theme.service"; -import {ProfilService} from "../../../utils/profil/profil.service"; - - - -@Component({ - selector: 'app-video-list', - templateUrl: './video-list.component.html', - styleUrls: ['./video-list.component.scss'] -}) -export class VideoListComponent implements OnChanges -{ - @Input() playlist: any; - videosInPlaylist: any[] = []; - - - constructor( private messageService: MessageService, - public themeService: ThemeService, - private addVideoToPlaylistsService: AddVideoToPlaylistsService, - private snackBar: MatSnackBar, - private profilService: ProfilService, - private router: Router ) { } - - - ngOnChanges(changes: SimpleChanges): void - { - if((this.playlist !== null) && (this.playlist !== undefined)) this.videosInPlaylist = this.playlist.videos; - } - - - onAddToPlaylist(video: any): void - { - this.addVideoToPlaylistsService.run(video.videoId, video.source, video.interest); - } - - - onDelete(video0: any, indexVideo: number): void - { - const data = { - videoId: { - id: video0._id, - action: "delete" - } - } - this.messageService - .put("playlist/update/"+this.playlist._id, data) - .subscribe( ret => this.onDeleteCallback(ret, indexVideo), err => this.onDeleteCallback(err, indexVideo)); - } - - - onDeleteCallback(retour: any, indexVideo: number): void - { - if(retour.status !== "success") { - console.log(retour); - } - else { - this.playlist.videos.splice(indexVideo, 1); - this.videosInPlaylist.splice(indexVideo, 1); - let message = "La video a bien été supprimé de la playlist"; - const config = { duration: 1000, panelClass: "custom-class" }; - this.snackBar.open( message, "", config); - } - } - - - onVideo(video: any): void - { - this.messageService - .put("video/update/"+video._id, {watchedDate: true}) - .subscribe(ret => this.onVideoCallback(ret), err => this.onVideoCallback(err)); - - const params = { - videoId: video.videoId, - source: video.source, - _idPlaylist: this.playlist._id, - from: "myPlaylists", - }; - this.router.navigate(['/user/watching'], { queryParams: params }); - } - - - onVideoCallback(retour: any): void - { - if(retour.status !== "success") console.log(retour); - } - -} diff --git a/userAndAdvertiser/src/app/user/myProfil/input-interests-profil/input-interests-profil.component.html b/userAndAdvertiser/src/app/user/myProfil/input-interests-profil/input-interests-profil.component.html deleted file mode 100644 index be2bd07..0000000 --- a/userAndAdvertiser/src/app/user/myProfil/input-interests-profil/input-interests-profil.component.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - {{interest}} - - - - - - - - - - - - {{interest}} - - - - - - diff --git a/userAndAdvertiser/src/app/user/myProfil/input-interests-profil/input-interests-profil.component.scss b/userAndAdvertiser/src/app/user/myProfil/input-interests-profil/input-interests-profil.component.scss deleted file mode 100644 index 7628dd4..0000000 --- a/userAndAdvertiser/src/app/user/myProfil/input-interests-profil/input-interests-profil.component.scss +++ /dev/null @@ -1,20 +0,0 @@ -mat-form-field { - width: 100%; - font-size: small; -} - -mat-chip-list { - font-size: small; -} - -mat-chip { - font-size: small; -} - -input { - font-size: small; -} - -mat-option { - font-size: small; -} diff --git a/userAndAdvertiser/src/app/user/myProfil/input-interests-profil/input-interests-profil.component.spec.ts b/userAndAdvertiser/src/app/user/myProfil/input-interests-profil/input-interests-profil.component.spec.ts deleted file mode 100644 index 0dd8314..0000000 --- a/userAndAdvertiser/src/app/user/myProfil/input-interests-profil/input-interests-profil.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { InputInterestsProfilComponent } from './input-interests-profil.component'; - -describe('InputInterestsComponent', () => { - let component: InputInterestsProfilComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ InputInterestsProfilComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(InputInterestsProfilComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/user/myProfil/input-interests-profil/input-interests-profil.component.ts b/userAndAdvertiser/src/app/user/myProfil/input-interests-profil/input-interests-profil.component.ts deleted file mode 100644 index 873052a..0000000 --- a/userAndAdvertiser/src/app/user/myProfil/input-interests-profil/input-interests-profil.component.ts +++ /dev/null @@ -1,121 +0,0 @@ -import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core'; -import {COMMA, ENTER} from "@angular/cdk/keycodes"; -import {FormControl} from "@angular/forms"; -import {Observable} from "rxjs"; -import {map, startWith} from "rxjs/operators"; -import {MatChipInputEvent} from "@angular/material/chips"; -import {MatAutocompleteSelectedEvent} from "@angular/material/autocomplete"; -import {MessageService} from "../../../utils/message/message.service"; - - - -@Component({ - selector: 'app-input-interests-profil', - templateUrl: './input-interests-profil.component.html', - styleUrls: ['./input-interests-profil.component.scss'] -}) -export class InputInterestsProfilComponent implements OnInit -{ - selectable = true; - removable = true; - separatorKeysCodes: number[] = [ENTER, COMMA]; - formControl = new FormControl(); - filteredInterests: Observable; - @Input() myInterests: string[] = []; - allInterests: string[] = []; - @Output() eventEmitter = new EventEmitter(); - @ViewChild('tagInput') tagInput: ElementRef; - interestsNotSelected: string[] = []; - - - constructor( private messageService: MessageService ) {} - - - ngOnInit(): void - { - this.filteredInterests = this.formControl.valueChanges.pipe( - startWith(null), - map((fruit: string | null) => fruit ? this._filter(fruit) : this.interestsNotSelected.slice())); - - this.messageService - .get("misc/getInterests") - .subscribe( retour => { - - if(retour.status !== "success") { - console.log(retour); - } - else { - this.allInterests = []; - for(let elt of retour.data) - { - this.allInterests.push(elt.interest); - this.interestsNotSelected.push(elt.interest); - } - } - }); - } - - - add(event: MatChipInputEvent): void - { - const value = (event.value || '').trim(); - const index = this.interestsNotSelected.indexOf(value); - if (value && (index !== -1) && (!this.myInterests.includes(value))) - { - this.myInterests.push(value); - event.chipInput!.clear(); - this.formControl.setValue(null); - this.eventEmitter.emit(this.myInterests); - this.interestsNotSelected.splice(index, 1); - } - } - - - remove(interest: string): void - { - // supprimer 'interest' de 'myInterest' - const index = this.myInterests.indexOf(interest); - if (index >= 0) this.myInterests.splice(index, 1); - this.eventEmitter.emit(this.myInterests); - - // remmettre 'interest' dans 'interestsNotSelected' - if(!this.interestsNotSelected.includes(interest)) - { - const indexOfAutres = this.interestsNotSelected.indexOf("Autres"); - if(indexOfAutres !== -1) - { - this.interestsNotSelected.splice(indexOfAutres, 1); - if(interest !== "Autres") this.interestsNotSelected.push(interest); - this.interestsNotSelected.sort(); - this.interestsNotSelected.push("Autres"); - } - else { - this.interestsNotSelected.push(interest); - if(interest !== "Autres") this.interestsNotSelected.sort(); - } - } - } - - - selected(event: MatAutocompleteSelectedEvent): void - { - const value = event.option.viewValue; - if(!this.myInterests.includes(value)) - { - this.myInterests.push(value); - const index = this.interestsNotSelected.indexOf(value); - this.interestsNotSelected.splice(index, 1); - } - this.tagInput.nativeElement.value = ''; - this.formControl.setValue(null); - this.eventEmitter.emit(this.myInterests); - } - - - private _filter(value: string): string[] - { - const filterValue = value.toLowerCase(); - return this.interestsNotSelected.filter(fruit => fruit.toLowerCase().includes(filterValue)); - } - -} diff --git a/userAndAdvertiser/src/app/user/myProfil/page-profil-user/page-profil-user.component.html b/userAndAdvertiser/src/app/user/myProfil/page-profil-user/page-profil-user.component.html deleted file mode 100644 index 7e69ded..0000000 --- a/userAndAdvertiser/src/app/user/myProfil/page-profil-user/page-profil-user.component.html +++ /dev/null @@ -1,92 +0,0 @@ -
-
- - - - - -
- - -
- -
- - -
- - -
- - -
- -
- -
- -
-
- - - - - - -
- - -
-
Pseudo:
-
{{user.login}}
-
- - -
-
Mail:
-
{{user.email}}
-
- - -
-
Sexe:
-
- Homme - Femme -
-
- - -
-
Date de création:
-
{{ user.createdAt | date:'dd/LL/YYYY' }}
-
- -
-
- - - - - - -
- - -
-
Date de naissance:
-
{{ user.dateOfBirth | date:'dd/LL/YYYY' }}
-
- - -
-
Centres d'intérêt:
-
-
-
{{interest}}
-
-
-
- -
-
diff --git a/userAndAdvertiser/src/app/user/myProfil/page-profil-user/page-profil-user.component.scss b/userAndAdvertiser/src/app/user/myProfil/page-profil-user/page-profil-user.component.scss deleted file mode 100644 index ae34d41..0000000 --- a/userAndAdvertiser/src/app/user/myProfil/page-profil-user/page-profil-user.component.scss +++ /dev/null @@ -1,80 +0,0 @@ -.myContainer { - max-width: 100vw; - height: 100vh; - overflow-x: hidden; -} - - -.boite { - margin-left: auto; - margin-right: auto; - width: 70%; - margin-top: 10vh; - border: solid 3px; - border-radius: 10px; - padding: 20px 40px 20px 40px; - background-color: #ffffff; - text-align: center; - box-shadow: 10px 5px 5px black; -} -.lightTheme .boite { - border-color: black; -} -.darkTheme .boite { - border-color: white; -} - -// -------------------------------------------------------------------------------------------- - -img { - margin: 0px 0px 10px 0px; - width: 5vw; - height: 5vw; - border: solid 2px black; - border-radius: 50%; - font-size: xxx-large; -} - -// -------------------------------------------------------------------------------------------- - -.myRow { - margin: 15px 0px 15px 0px; -} -.myLabel { - text-align: right; - padding: 0px 5px 0px 0px; - margin: 0px; - font-weight: bold; -} -.myValue { - text-align: left; - padding: 0px 0px 0px 5px; - margin: 0px; -} - -// -------------------------------------------------------------------------------------------- - -.interestsContainer { - width: 70%; - height: 15vh; - overflow-y: scroll; - border: 1px solid black; -} - -.interest { - border-bottom: 1px solid #dcdcdc; - padding: 5px 5px 5px 5px; -} - -// -------------------------------------------------------------------------------------------- - -.btnContainer { - text-align: center; - margin-top: 40px; -} -.myBtn { - border: solid 1px black; - background-color: white; -} - - diff --git a/userAndAdvertiser/src/app/user/myProfil/page-profil-user/page-profil-user.component.spec.ts b/userAndAdvertiser/src/app/user/myProfil/page-profil-user/page-profil-user.component.spec.ts deleted file mode 100644 index e8722af..0000000 --- a/userAndAdvertiser/src/app/user/myProfil/page-profil-user/page-profil-user.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PageProfilUserComponent } from './page-profil-user.component'; - -describe('PageProfilUserComponent', () => { - let component: PageProfilUserComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PageProfilUserComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PageProfilUserComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/user/myProfil/page-profil-user/page-profil-user.component.ts b/userAndAdvertiser/src/app/user/myProfil/page-profil-user/page-profil-user.component.ts deleted file mode 100644 index be4615f..0000000 --- a/userAndAdvertiser/src/app/user/myProfil/page-profil-user/page-profil-user.component.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import {MatDialog} from "@angular/material/dialog"; -import {MatSnackBar} from "@angular/material/snack-bar"; -import {PopupUpdateUserComponent} from "../popup-update-user/popup-update-user.component"; -import {ThemeService} from "../../../utils/theme/theme.service"; -import {MessageService} from "../../../utils/message/message.service"; -import {ProfilService} from "../../../utils/profil/profil.service"; - - - -@Component({ - selector: 'app-page-profil-user', - templateUrl: './page-profil-user.component.html', - styleUrls: ['./page-profil-user.component.scss'] -}) -export class PageProfilUserComponent implements OnInit -{ - user = { - _id: "", - login: "", - hashPass: "", - email: "", - role: { - name: "user", - permission: 0, - isAccepted: false, - }, - profileImageUrl: "", - dateOfBirth: null, - gender: "man", - interests: [], - company: "", - isActive: true, - createdAt: new Date(), - updatedAt: new Date(), - lastConnexion: null - }; - - - constructor( public themeService: ThemeService, - public dialog: MatDialog, - private snackBar: MatSnackBar, - private messageService: MessageService, - private profilService: ProfilService ) { } - - - ngOnInit(): void - { - this.messageService - .get( "user/findOne/"+this.profilService.getId()) - .subscribe( retour => this.ngOnInitCallback(retour), err => this.ngOnInitCallback(err) ) - } - - - ngOnInitCallback(retour: any) - { - if(retour.status !== "success") { - console.log(retour); - } - else { - this.user = retour.data; - } - } - - - onModifier() - { - const config = { - width: '70%', - data: { user: this.user } - }; - this.dialog - .open(PopupUpdateUserComponent, config) - .afterClosed() - .subscribe(retour => { - - if((retour === null) || (retour === undefined)) - { - const config = { duration: 1000, panelClass: "custom-class" }; - this.snackBar.open( "Opération annulé", "", config); - } - else - { - this.user = retour; - } - }); - } - -} diff --git a/userAndAdvertiser/src/app/user/myProfil/popup-update-user/popup-update-user.component.html b/userAndAdvertiser/src/app/user/myProfil/popup-update-user/popup-update-user.component.html deleted file mode 100644 index 1e583c7..0000000 --- a/userAndAdvertiser/src/app/user/myProfil/popup-update-user/popup-update-user.component.html +++ /dev/null @@ -1,125 +0,0 @@ -
- - -
-
- -

- - -
- - -
- - -
-
{{errorMessage}}
-
- - -
- - -
- -
- - - - - - - -
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- - Homme     - Femme - -
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
- - - - - - - -
- - -
- -
- -
-
- -
-
diff --git a/userAndAdvertiser/src/app/user/myProfil/popup-update-user/popup-update-user.component.scss b/userAndAdvertiser/src/app/user/myProfil/popup-update-user/popup-update-user.component.scss deleted file mode 100644 index 636928e..0000000 --- a/userAndAdvertiser/src/app/user/myProfil/popup-update-user/popup-update-user.component.scss +++ /dev/null @@ -1,81 +0,0 @@ -.myContainer { - font-size: small; -} - -button { - font-size: small; -} - -img { - margin: 0px 0px 10px 0px; - width: 5vw; - height: 5vw; - border: solid 2px black; - border-radius: 50%; - font-size: xxx-large; -} - -.inputUrlImage { - width: 80%; - text-align: center; - margin-left: 10%; - margin-right: 10%; - font-size: small; - border-radius: 5px; -} - -input { - font-size: small; -} - -// ------------------------------------------------------------------------- - -.myRow { - margin: 15px 0px 15px 0px; -} -.myLeftLabel { - text-align: right; - padding: 0px 0px 0px 0px; - margin: 0px 0px 0px 0px; - font-weight: bold; -} -.myRightLabel { - text-align: left; - padding: 0px 0px 0px 0px; - margin: 0px 0px 0px 0px; - font-weight: bold; -} -.myValue { - text-align: left; - padding: 0px 0px 0px 0px; - margin: 0px 0px 0px 0px; -} - -// ------------------------------------------------------------------------- - -// aura -::ng-deep .mat-checkbox-ripple .mat-ripple-element { - background-color: grey !important; -} - -// contenu coche -::ng-deep .mat-checkbox-checked.mat-accent .mat-checkbox-background { - background-color: black !important; -} - -// indeterminate -::ng-deep .mat-checkbox .mat-checkbox-frame { - background-color: white !important; -} - -// ------------------------------------------------------------------------- - -::ng-deep .mat-radio-inner-circle { - color: black !important; - background-color: black !important; -} - -::ng-deep .mat-radio-outer-circle{ - color: black !important; - border: solid 1px gray !important; -} diff --git a/userAndAdvertiser/src/app/user/myProfil/popup-update-user/popup-update-user.component.spec.ts b/userAndAdvertiser/src/app/user/myProfil/popup-update-user/popup-update-user.component.spec.ts deleted file mode 100644 index a5126ad..0000000 --- a/userAndAdvertiser/src/app/user/myProfil/popup-update-user/popup-update-user.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PopupUpdateUserComponent } from './popup-update-user.component'; - -describe('PopupUpdateUserComponent', () => { - let component: PopupUpdateUserComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PopupUpdateUserComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PopupUpdateUserComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/user/myProfil/popup-update-user/popup-update-user.component.ts b/userAndAdvertiser/src/app/user/myProfil/popup-update-user/popup-update-user.component.ts deleted file mode 100644 index 4c91d19..0000000 --- a/userAndAdvertiser/src/app/user/myProfil/popup-update-user/popup-update-user.component.ts +++ /dev/null @@ -1,132 +0,0 @@ -import {Component, Inject, OnInit} from '@angular/core'; -import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog"; -import {MessageService} from "../../../utils/message/message.service"; -import {ProfilService} from "../../../utils/profil/profil.service"; - - - -@Component({ - selector: 'app-popup-update-user', - templateUrl: './popup-update-user.component.html', - styleUrls: ['./popup-update-user.component.scss'] -}) -export class PopupUpdateUserComponent implements OnInit -{ - userCopy; - newPassword: string = ""; - confirmNewPassword: string = "" ; - changePassword: boolean = false ; - hasError: boolean = false; - errorMessage: string = "" ; - - - constructor( public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data, - private messageService: MessageService, - private profilService: ProfilService ) { } - - - ngOnInit(): void - { - const user0 = this.data.user; - this.userCopy = { - _id: user0._id, - login: user0.login, - hashPass: user0.hashPass, - email: user0.email, - role: { - name: user0.role.name, - permission: user0.role.permission, - isAccepted: user0.role.isAccepted, - }, - profileImageUrl: user0.profileImageUrl, - dateOfBirth: user0.dateOfBirth, - gender: user0.gender, - interests: [], - company: "", - isActive: user0.isActive, - createdAt: user0.createdAt, - updatedAt: user0.updatedAt, - lastConnexion: new Date() - }; - for(let interest of user0.interests) this.userCopy.interests.push(interest); - } - - - onValider() - { - this.checkField(); - if(!this.hasError) - { - if(this.changePassword) this.userCopy.hashPass = this.newPassword; - const data = { - login: this.userCopy.login, - hashPass: this.userCopy.hashPass, - email: this.userCopy.email, - profileImageUrl: this.userCopy.profileImageUrl, - dateOfBirth: this.userCopy.dateOfBirth, - gender: this.userCopy.gender, - interests: this.userCopy.interests, - }; - this.messageService - .put("user/update/"+this.profilService.getId(), data) - .subscribe( ret => this.onValiderCallback(ret), err => this.onValiderCallback(err) ); - } - } - - - onValiderCallback(retour: any) - { - if(retour.status !== "success") { - console.log(retour); - this.dialogRef.close(null); - } - else { - this.profilService.setProfileImageUrl(this.userCopy.profileImageUrl); - this.dialogRef.close(this.userCopy); - } - } - - - checkField() - { - if(this.userCopy.login.length === 0) { - this.errorMessage = "Veuillez remplir le champ 'pseudo'." ; - this.hasError = true; - } - else if(this.userCopy.email.length === 0) { - this.errorMessage = "Veuillez remplir le champ 'email'." ; - this.hasError = true; - } - else if(!this.isValidEmail(this.userCopy.email)) { - this.errorMessage = "Email invalide." ; - this.hasError = true; - } - else if((this.changePassword) && (this.newPassword.length === 0)) { - this.errorMessage = "Veuillez remplir le champ 'mot de passe'" ; - this.hasError = true; - } - else if((this.changePassword) && (this.newPassword !== this.confirmNewPassword)) { - this.errorMessage = "Le mot de passe est différent de sa confirmation" ; - this.hasError = true; - } - else { - this.errorMessage = "" ; - this.hasError = false; - } - } - - - isValidEmail(email) - { - let re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; - return re.test(email); - } - - - onEventInputInterests(myInterets: string[]) - { - this.userCopy.interests = myInterets; - } - -} diff --git a/userAndAdvertiser/src/app/user/search/page-search/page-search.component.html b/userAndAdvertiser/src/app/user/search/page-search/page-search.component.html deleted file mode 100644 index 0039bdd..0000000 --- a/userAndAdvertiser/src/app/user/search/page-search/page-search.component.html +++ /dev/null @@ -1,80 +0,0 @@ -
-
- - -
- -
- - - - - - -
- - -
-
- - -
-
- - -
- - -   - - logo - -   - - - -   - - logo - -   - -
- -
- - - - - - - - - - -
- -
-
- - - -
- -
-
- - - -
- -
-
- -
-

- -
-
diff --git a/userAndAdvertiser/src/app/user/search/page-search/page-search.component.scss b/userAndAdvertiser/src/app/user/search/page-search/page-search.component.scss deleted file mode 100644 index f80fc45..0000000 --- a/userAndAdvertiser/src/app/user/search/page-search/page-search.component.scss +++ /dev/null @@ -1,90 +0,0 @@ -.lightTheme { - color: black; - border-color: black; -} -.darkTheme { - color: white; - border-color: white; -} -.myContainer { - text-align: center; - max-width: 100vw; - height: 100vh; - overflow-x: hidden; - overflow-y: scroll; -} - -//-------------------------------------------------------------------------------------------- - -.inputSearchBar { - width: 40%; - font-size: large; - border-bottom: 10px; - border-radius: 5px; -} - -//-------------------------------------------------------------------------------------------- - -.celluleGrilleVideo { - border: solid 2px; - border-radius: 5px; - width: 100%; -} -.lightTheme .celluleGrilleVideo{ - border-color: black; - background-color: #f0f0f0; -} -.darkTheme .celluleGrilleVideo{ - border-color: white; - background-color: #646464; -} - -.conteneurVideosGrid { - height: 75vh; - width: 100%; -} - -//-------------------------------------------------------------------------------------------- - -.cellulePub { - padding: 0px 10px 0px 10px; - width: 100%; - text-align: center; - justify-content: center; -} - -.conteneurPub { - height: 75vh; - text-align: center; - justify-content: center; - vertical-align: middle; - display: block; - width: 75%; - margin-left: auto; - margin-right: auto; - position: absolute; - top: 50%; - -ms-transform: translateY(-50%); - transform: translateY(-50%); -} - - - -// ------------------------------------------------------------------------- - - -// aura -::ng-deep .mat-checkbox-ripple .mat-ripple-element { - background-color: grey !important; -} - -// contenu coche -::ng-deep .mat-checkbox-checked.mat-accent .mat-checkbox-background { - background-color: black !important; -} - -// indeterminate -::ng-deep .mat-checkbox .mat-checkbox-frame { - border: solid 1px black !important; - background-color: white !important; -} diff --git a/userAndAdvertiser/src/app/user/search/page-search/page-search.component.spec.ts b/userAndAdvertiser/src/app/user/search/page-search/page-search.component.spec.ts deleted file mode 100644 index 79e1a03..0000000 --- a/userAndAdvertiser/src/app/user/search/page-search/page-search.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PageSearchComponent } from './page-search.component'; - -describe('PageSearchComponent', () => { - let component: PageSearchComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PageSearchComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PageSearchComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/user/search/page-search/page-search.component.ts b/userAndAdvertiser/src/app/user/search/page-search/page-search.component.ts deleted file mode 100644 index 60b9826..0000000 --- a/userAndAdvertiser/src/app/user/search/page-search/page-search.component.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import {HttpParams} from "@angular/common/http"; -import {ActivatedRoute} from "@angular/router"; -import {MessageService} from "../../../utils/message/message.service"; -import {ThemeService} from "../../../utils/theme/theme.service"; - - - -let TAB_PLATEFORM = [ - { name: "Youtube", isSelected: true }, - { name: "Dailymotion", isSelected: true } -]; - - - -@Component({ - selector: 'app-page-search', - templateUrl: './page-search.component.html', - styleUrls: ['./page-search.component.scss'] -}) -export class PageSearchComponent implements OnInit -{ - tabPlateform = TAB_PLATEFORM; - tabVideo: any[] = []; - search: string = ""; - ad1: any; - ad2: any; - sources: string = "" ; - indexPage: number = 0; - - - constructor( private messageService: MessageService, - public themeService: ThemeService, - private activatedRoute: ActivatedRoute ) { } - - - ngOnInit(): void - { - // parametre de la route - this.activatedRoute - .queryParams - .subscribe(paramsFromOldPage => { - if(paramsFromOldPage.hasOwnProperty("search")) this.search = paramsFromOldPage.search; - if(paramsFromOldPage.hasOwnProperty("sources")) - { - this.sources = paramsFromOldPage.sources; - if(this.sources === "yt") { - this.tabPlateform[0].isSelected = true; - this.tabPlateform[1].isSelected = false; - } - else if(this.sources === "dm") { - this.tabPlateform[0].isSelected = false; - this.tabPlateform[1].isSelected = true; - } - else if(this.sources === "yt,dm") { - this.tabPlateform[0].isSelected = true; - this.tabPlateform[1].isSelected = true; - } - } - if(paramsFromOldPage.hasOwnProperty("indexPage")) this.indexPage = parseInt(paramsFromOldPage.indexPage, 10); - this.onSearch(); - }); - - // Ask for ads - let params = new HttpParams(); - params = params.append("quantity", 2); - this.messageService - .get("user/ad", params) - .subscribe(ret => this.adCallback(ret), err => this.adCallback(err)); - } - - - adCallback(retour: any): void - { - if(retour.status !== "success") { - console.log(retour); - } - else { - this.ad1 = retour.data[0]; - this.ad2 = retour.data[1]; - } - } - - - onSearch() - { - let params = new HttpParams(); - params = params.append('q', this.search); - - if(this.tabPlateform[0].isSelected && this.tabPlateform[1].isSelected) this.sources = "yt,dm" ; - else if((!this.tabPlateform[0].isSelected) && this.tabPlateform[1].isSelected) this.sources = "dm" ; - else if(this.tabPlateform[0].isSelected && (!this.tabPlateform[1].isSelected)) this.sources = "yt" ; - else this.sources = "" ; - params = params.append('sources', this.sources); - - this.messageService - .get("video/search", params) - .subscribe(ret => this.onSearchCallback(ret), err => this.onSearchCallback(err)); - } - - - onSearchCallback(retour: any): void - { - if(retour.status !== "success") { - console.log(retour); - } - else { - this.tabVideo = retour.data; - } - } - - - onEnterOnSearchBar(event) - { - if(event.key === 'Enter') this.onSearch(); - } - -} diff --git a/userAndAdvertiser/src/app/user/search/video-grid/video-grid.component.html b/userAndAdvertiser/src/app/user/search/video-grid/video-grid.component.html deleted file mode 100644 index 841d5c3..0000000 --- a/userAndAdvertiser/src/app/user/search/video-grid/video-grid.component.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - -
- - -
- - - -
- - -
- - - - - - - - ytb - dlm - - - - -
- {{tronquage(tabVideo[indexPage+k].title)}} -
- - {{tabVideo[indexPage+k].views | number: '1.0-0'}} vues. - Il y a {{dateToElapsedTime(tabVideo[indexPage+k].publishedAt)}}. - -
-
- - - - - - -
- - -
-
-
-
- - - - - -
- - -   - - - - - {{page}}  - - - {{page}}  - -   - - - - -
diff --git a/userAndAdvertiser/src/app/user/search/video-grid/video-grid.component.scss b/userAndAdvertiser/src/app/user/search/video-grid/video-grid.component.scss deleted file mode 100644 index 6819fd8..0000000 --- a/userAndAdvertiser/src/app/user/search/video-grid/video-grid.component.scss +++ /dev/null @@ -1,84 +0,0 @@ -mat-grid-list { - margin: 0px 0px 0px 0px; - padding: 0px 0px 0px 0px; - border: none; -} - -mat-grid-tile { - margin: 0px 0px 0px 0px; - padding: 0px 0px 0px 0px; -} - -.myCell { - margin: 7px 0px 0px 0px; - padding: 0px 0px 0px 0px; - background-color: white; - border: solid 1px black; - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; - cursor: pointer; -} -.myCell:hover { - background-color: #d2d2d2; -} - - -// --------------------------------------------------------------------------------------------- - - -.imgsContainer { - //width: 20vw; - width: 18vw; - height: 15vh; -} - -.imgPlay { - position: absolute; - margin-left: 8vw; - width: 2.5vw; - margin-top: 5vh; - height: 5vh; - padding: 0px 0px 0px 0px; -} - -.imgVideo { - width: 18vw; - height: 15vh; - padding: 0px 0px 0px 0px; -} - - -// --------------------------------------------------------------------------------------------- - - -.mat-grid-list-info-video { - margin: 0px 0px 0px 0px; - font-size: small; -} - -.mat-grid-tile-info-video { - border: none; - font-size: x-small; - //background: linear-gradient(top, rgba(38,38,38,0.8), #e6e6e6 25%, #fff 38%, #c5c5c5 87%, rgba(38,38,38,0.8)); - //background: -webkit-linear-gradient(top, #c5c5c5, #e6e6e6 25%, #fff 38%, #c5c5c5 87%, #c5c5c5); -} - -mat-icon { - text-align: right; -} - - -// --------------------------------------------------------------------------------------------- - - -.paginatorContainer { - margin: 0px 0px 0px 0px; - padding: 5px 0px 0px 0px; - text-align: center; - background-color: white; -} - -.btnPaginator { - margin: 0px 0px 0px 0px; - padding: 0px 0px 0px 0px; -} diff --git a/userAndAdvertiser/src/app/user/search/video-grid/video-grid.component.spec.ts b/userAndAdvertiser/src/app/user/search/video-grid/video-grid.component.spec.ts deleted file mode 100644 index 17cea62..0000000 --- a/userAndAdvertiser/src/app/user/search/video-grid/video-grid.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { VideoGridComponent } from './video-grid.component'; - -describe('VideoGridComponent', () => { - let component: VideoGridComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ VideoGridComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(VideoGridComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/user/search/video-grid/video-grid.component.ts b/userAndAdvertiser/src/app/user/search/video-grid/video-grid.component.ts deleted file mode 100644 index 11dea65..0000000 --- a/userAndAdvertiser/src/app/user/search/video-grid/video-grid.component.ts +++ /dev/null @@ -1,128 +0,0 @@ -import {Component, Input, OnChanges, SimpleChanges} from '@angular/core'; -import {AddVideoToPlaylistsService} from "../../utils/services/addVideoToPlaylists/add-video-to-playlists.service"; -import {Router} from "@angular/router"; -import {MessageService} from "../../../utils/message/message.service"; - - - -@Component({ - selector: 'app-video-grid', - templateUrl: './video-grid.component.html', - styleUrls: ['./video-grid.component.scss'] -}) -export class VideoGridComponent implements OnChanges -{ - @Input() tabVideo: any[] = []; - @Input() search: string = ""; - @Input() sources: string = ""; - @Input() indexPage: number = 0; - tabPage: number[] = []; - - - constructor( private addVideoToPlaylistsService: AddVideoToPlaylistsService, - private router: Router, - private messageService: MessageService ) {} - - - ngOnChanges(changes: SimpleChanges): void - { - if(this.tabVideoExists()) - { - const nbVideo = this.tabVideo.length; - let nbPage = Math.floor(nbVideo/9); - if((nbVideo%9) !== 0) nbPage += 1; - this.tabPage = []; - for(let i=1 ; i<=nbPage ; i++) this.tabPage.push(i); - } - } - - - onAddToPlaylist(video): void - { - this.addVideoToPlaylistsService.run(video.videoId, video.source, video.interest); - } - - - tronquage(str: string) - { - if(str.length < 30) return str; - else return str.substring(0, 27) + "..." ; - } - - - onVideo(video): void - { - const data = { source: video.source, interest: video.interest }; - this.messageService - .post("video/create/"+video.videoId, data) - .subscribe(ret => this.onVideoCallback(ret,video), err => this.onVideoCallback(err,video)); - } - - - onVideoCallback(retour: any, video): void - { - if(retour.status !== "success") { - console.log(retour); - } - else { - const params = { - videoId: video.videoId, - source: video.source, - from: "search", - search: this.search, - sources: this.sources, - indexPage: this.indexPage - }; - this.router.navigate(['/user/watching'], { queryParams: params }); - } - } - - - dateToElapsedTime(date0): string - { - const ellapsedTimeInMilliSeconds = (new Date()).getTime() - (new Date(date0)).getTime(); - - // seconde - const ellapsedTimeInSeconds = Math.trunc(ellapsedTimeInMilliSeconds / 1000); - if(ellapsedTimeInSeconds < 60) { - if(ellapsedTimeInSeconds <= 1)return ellapsedTimeInSeconds + " seconde" ; - else return ellapsedTimeInSeconds + " secondes" ; - } - // minute - const ellapsedTimeInMinutes = Math.trunc(ellapsedTimeInSeconds / 60); - if(ellapsedTimeInMinutes < 60) { - if(ellapsedTimeInMinutes <= 1) return ellapsedTimeInMinutes + " minute" ; - else return ellapsedTimeInMinutes + " minutes" ; - } - // heure - const ellapsedTimeInHours = Math.trunc(ellapsedTimeInMinutes / 60); - if(ellapsedTimeInHours < 24) { - if(ellapsedTimeInHours <= 1) return ellapsedTimeInHours + " heure" ; - else return ellapsedTimeInHours + " heures" ; - } - // jour - const ellapsedTimeInDays = Math.trunc(ellapsedTimeInHours / 24); - if(ellapsedTimeInDays < 31) { - if(ellapsedTimeInDays <= 1) return ellapsedTimeInDays + " jour" ; - else return ellapsedTimeInDays + " jours" ; - } - // mois - const ellapsedTimeInMonths = Math.trunc(ellapsedTimeInDays / 31); - if(ellapsedTimeInMonths < 12) { - return ellapsedTimeInMonths + " mois" ; - } - // an - const ellapsedTimeInYears = Math.trunc(ellapsedTimeInMonths / 12); - if(ellapsedTimeInYears <= 1) return ellapsedTimeInYears + " an" ; - else return ellapsedTimeInYears + " ans" ; - } - - - tabVideoExists(): boolean - { - if((this.tabVideo === null) || (this.tabVideo === undefined)) return false; - else if(this.tabVideo.length === 0) return false; - else return true; - } - -} diff --git a/userAndAdvertiser/src/app/user/utils/components/advert/advert.component.html b/userAndAdvertiser/src/app/user/utils/components/advert/advert.component.html deleted file mode 100644 index b1c034a..0000000 --- a/userAndAdvertiser/src/app/user/utils/components/advert/advert.component.html +++ /dev/null @@ -1,26 +0,0 @@ -
- - - - -
- - - - - - - - diff --git a/userAndAdvertiser/src/app/user/utils/components/advert/advert.component.scss b/userAndAdvertiser/src/app/user/utils/components/advert/advert.component.scss deleted file mode 100644 index ab03155..0000000 --- a/userAndAdvertiser/src/app/user/utils/components/advert/advert.component.scss +++ /dev/null @@ -1,41 +0,0 @@ -.myContainer { - margin: 0; - position: absolute; - top: 50%; - -ms-transform: translateY(-50%); - transform: translateY(-50%); -} - -#imgFromSearchOrMyPlaylists { - max-width: 100%; - max-height: 100%; - border: solid 3px black; - vertical-align: middle; - cursor: pointer; -} - -.helper { - display: inline-block; - height: 100%; - vertical-align: middle; -} - -// ------------------------------------------------------------------------------ - -#imgFromWatchingLeft { - width: 14vw; - height: 70vh; - border: solid 3px black; - position: fixed; - left: 1vw; - cursor: pointer; -} - -#imgFromWatchingRight { - width: 15vw; - height: 70vh; - border: solid 3px black; - position: fixed; - right: 1vw; - cursor: pointer; -} diff --git a/userAndAdvertiser/src/app/user/utils/components/advert/advert.component.spec.ts b/userAndAdvertiser/src/app/user/utils/components/advert/advert.component.spec.ts deleted file mode 100644 index 08b7e86..0000000 --- a/userAndAdvertiser/src/app/user/utils/components/advert/advert.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { AdvertComponent } from './advert.component'; - -describe('PubComponent', () => { - let component: AdvertComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ AdvertComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(AdvertComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/user/utils/components/advert/advert.component.ts b/userAndAdvertiser/src/app/user/utils/components/advert/advert.component.ts deleted file mode 100644 index 00b8b44..0000000 --- a/userAndAdvertiser/src/app/user/utils/components/advert/advert.component.ts +++ /dev/null @@ -1,40 +0,0 @@ -import {Component, Input, OnChanges, SimpleChanges} from '@angular/core'; - - - -@Component({ - selector: 'app-advert', - templateUrl: './advert.component.html', - styleUrls: ['./advert.component.scss'] -}) -export class AdvertComponent implements OnChanges -{ - @Input() ad: any; - @Input() from: string = "search"; - image: any; - imageExist: boolean = false; - - - constructor() { } - - - ngOnChanges(changes: SimpleChanges): void - { - if((this.ad !== null) && (this.ad !== undefined)) - { - const nbImages = this.ad.images.length; - const indexImage = Math.floor(Math.random() * nbImages); - this.image = this.ad.images[indexImage]; - this.imageExist = true; - } - } - - - onClick(): void - { - if((this.ad.url !== "") && (this.ad.url !== null) && (this.ad.url !== undefined)) { - document.location.href = this.ad.url; - } - } - -} diff --git a/userAndAdvertiser/src/app/user/utils/components/navbar-user/navbar-user.component.html b/userAndAdvertiser/src/app/user/utils/components/navbar-user/navbar-user.component.html deleted file mode 100644 index 605e192..0000000 --- a/userAndAdvertiser/src/app/user/utils/components/navbar-user/navbar-user.component.html +++ /dev/null @@ -1,41 +0,0 @@ - diff --git a/userAndAdvertiser/src/app/user/utils/components/navbar-user/navbar-user.component.scss b/userAndAdvertiser/src/app/user/utils/components/navbar-user/navbar-user.component.scss deleted file mode 100644 index 285d629..0000000 --- a/userAndAdvertiser/src/app/user/utils/components/navbar-user/navbar-user.component.scss +++ /dev/null @@ -1,80 +0,0 @@ -.navbar { - background-color: black; - height: 60px; - font-size: medium; - color: white; -} - - -.navbar-expand-lg { - border-bottom: solid; - border-color: white; - border-bottom-width: 2px; -} - - -// PolyNotFound -.navbar-brand { - font-family: cursive; - font-weight: bold; - font-size: x-large; - margin-left: 15px; - color: white; -} - - -.monLi { - margin: 0px 10px 0px 10px; -} - - -.nav-link { - color: white; -} -.nav-link:hover { - color: grey; -} -.myActiveLink { - text-decoration: underline; -} - - -.btnDeconnexion { - font-size: medium; - margin: 0px 10px 0px 10px -} -.btnDeconnexion:hover { - color: grey; -} - - -img { - border: solid 2px white; - border-radius: 50px; - margin: 0px 10px 0px 15px; - width: 40px; - height: 40px; -} -img:hover { - cursor: pointer; -} - - -// -------------------------------------------------------------------- - - -::ng-deep .mat-slide-toggle-thumb { - background-color: #c8c8c8; -} - -::ng-deep .mat-slide-toggle-bar { - background-color: #ffffff; -} - -::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-thumb { - background-color: #ffffff; -} - -::ng-deep .mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-bar { - background-color: #646464; -} diff --git a/userAndAdvertiser/src/app/user/utils/components/navbar-user/navbar-user.component.spec.ts b/userAndAdvertiser/src/app/user/utils/components/navbar-user/navbar-user.component.spec.ts deleted file mode 100644 index 5d03960..0000000 --- a/userAndAdvertiser/src/app/user/utils/components/navbar-user/navbar-user.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { NavbarUserComponent } from './navbar-user.component'; - -describe('NavbarUserComponent', () => { - let component: NavbarUserComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ NavbarUserComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(NavbarUserComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/user/utils/components/navbar-user/navbar-user.component.ts b/userAndAdvertiser/src/app/user/utils/components/navbar-user/navbar-user.component.ts deleted file mode 100644 index ec8576e..0000000 --- a/userAndAdvertiser/src/app/user/utils/components/navbar-user/navbar-user.component.ts +++ /dev/null @@ -1,41 +0,0 @@ -import {Component} from '@angular/core'; -import {Router} from "@angular/router"; -import {ProfilService} from "../../../../utils/profil/profil.service"; -import {MessageService} from "../../../../utils/message/message.service"; - - - -@Component({ - selector: 'app-navbar-user', - templateUrl: './navbar-user.component.html', - styleUrls: ['./navbar-user.component.scss'] -}) -export class NavbarUserComponent -{ - routes: string[] = [ - "/user", // 0 - "/user/search", // 1 - "/user/myPlaylists", // 2 - "/user/history", // 3 - "/user/myProfil" // 4 - ]; - - url = this.router.url; - - constructor( private router: Router, - public profilService: ProfilService, - private messageService: MessageService ) { } - - onDeconnexion(): void - { - this.messageService - .delete('user/logout') - .subscribe(retour => this.onDeconnexionCallback(retour), err => this.onDeconnexionCallback(err)); - } - - onDeconnexionCallback(retour: any): void - { - if(retour.status !== "success") console.log(retour); - } - -} diff --git a/userAndAdvertiser/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.html b/userAndAdvertiser/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.html deleted file mode 100644 index 115b281..0000000 --- a/userAndAdvertiser/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.html +++ /dev/null @@ -1,42 +0,0 @@ -

Ajouter dans

- - - - - -
-
- {{playlist.name}} -
-
- - - - - -
- -
- -
- - Nom playlist - - - -
- - - - - - {{errorMessage}} - - - - diff --git a/userAndAdvertiser/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.scss b/userAndAdvertiser/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.scss deleted file mode 100644 index a6f9d32..0000000 --- a/userAndAdvertiser/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.scss +++ /dev/null @@ -1,39 +0,0 @@ -h3 { - text-align: center; - margin-bottom: 10px -} - -.conteneurPlaylists { - margin-top: 10px; - margin-bottom: 10px; -} - -.conteneurBtnCreerPlaylist { - margin-top: 10px; - margin-bottom: 10px; -} - -.conteneurInputNewPlaylist { - margin-top: 10px; - margin-bottom: 10px; -} - - -// ------------------------------------------------------------------------- - - -// aura -::ng-deep .mat-checkbox-ripple .mat-ripple-element { - background-color: grey !important; -} - -// contenu coche -::ng-deep .mat-checkbox-checked.mat-accent .mat-checkbox-background { - background-color: black !important; -} - -// indeterminate -::ng-deep .mat-checkbox .mat-checkbox-frame { - border-color: black !important; - background-color: white !important; -} diff --git a/userAndAdvertiser/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.spec.ts b/userAndAdvertiser/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.spec.ts deleted file mode 100644 index 5ace846..0000000 --- a/userAndAdvertiser/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PopupAddVideoToPlaylistsComponent } from './popup-add-video-to-playlists.component'; - -describe('PopupAddVideoToPlaylistsComponent', () => { - let component: PopupAddVideoToPlaylistsComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PopupAddVideoToPlaylistsComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PopupAddVideoToPlaylistsComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.ts b/userAndAdvertiser/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.ts deleted file mode 100644 index cfa0119..0000000 --- a/userAndAdvertiser/src/app/user/utils/components/popup-add-video-to-playlists/popup-add-video-to-playlists.component.ts +++ /dev/null @@ -1,141 +0,0 @@ -import {Component, Inject, OnInit} from '@angular/core'; -import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog"; -import {MessageService} from "../../../../utils/message/message.service"; - - - -@Component({ - selector: 'app-popup-add-video-to-playlists', - templateUrl: './popup-add-video-to-playlists.component.html', - styleUrls: ['./popup-add-video-to-playlists.component.scss'] -}) -export class PopupAddVideoToPlaylistsComponent implements OnInit -{ - _idVideo: string = ""; - videoId: string = ""; - source: string = ""; - interest: string = ""; - - tabPlaylistAndBool = []; - - goToCreatePlaylist = false; - newPlaylistName = ""; - hasError: boolean = false; - tabNomPlaylist: string[] = []; - errorMessage: string = "" ; - - - constructor( public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data, - private messageService: MessageService) { } - - - ngOnInit(): void - { - this._idVideo = this.data._idVideo; - this.videoId = this.data.videoId; - this.source = this.data.source; - this.interest = this.data.interest; - - for(let playlist of this.data.playlists) - { - if(playlist.videoIds.includes(this._idVideo)) playlist["isSelected"] = true; - else playlist["isSelected"] = false; - this.tabPlaylistAndBool.push(playlist); - this.tabNomPlaylist.push(playlist.name); - } - } - - - onValider(): void - { - this.checkError(); - if(!this.hasError) - { - // --- Existing playlists --- - let listeDesPlaylistsSelected = "" ; - let listeDesPlaylistsNotSelected = "" ; - for(let playlist of this.tabPlaylistAndBool) - { - if(playlist.isSelected) listeDesPlaylistsSelected += playlist.id + "," ; - else listeDesPlaylistsNotSelected += playlist.id + "," ; - } - if(listeDesPlaylistsSelected.endsWith(",")) listeDesPlaylistsSelected = listeDesPlaylistsSelected.slice(0, listeDesPlaylistsSelected.length-1); - if(listeDesPlaylistsNotSelected.endsWith(",")) listeDesPlaylistsNotSelected = listeDesPlaylistsNotSelected.slice(0, listeDesPlaylistsNotSelected.length-1); - - if(listeDesPlaylistsSelected !== "") - { - const data1 = { videoId: { id: this._idVideo, action: "add" } }; - this.messageService - .put( "playlist/update/"+listeDesPlaylistsSelected, data1) - .subscribe( ret => this.callbackForExistingPlaylists(ret), err => this.callbackForExistingPlaylists(err)); - } - if(listeDesPlaylistsNotSelected !== "") - { - const data2 = { videoId: { id: this._idVideo, action: "delete" } }; - this.messageService - .put( "playlist/update/"+listeDesPlaylistsNotSelected, data2) - .subscribe( ret => this.callbackForExistingPlaylists(ret), err => this.callbackForExistingPlaylists(err)); - } - - - // --- New playlists --- - if(this.goToCreatePlaylist) - { - const data3 = { - name: this.newPlaylistName, - video: {videoId: this.videoId, interest: this.interest, source: this.source} - }; - this.messageService - .post("playlist/create", data3) - .subscribe( ret => this.callbackForNewPlaylist(ret), err => this.callbackForNewPlaylist(err)); - } - - - // --- Finalement --- - this.dialogRef.close("success"); - } - } - - - callbackForExistingPlaylists(retour: any): void - { - if(retour.status !== "success") { - console.log(retour); - this.dialogRef.close(null); - } - } - - - callbackForNewPlaylist(retour: any): void - { - if(retour.status !== "success") { - console.log(retour); - this.dialogRef.close(null); - } - } - - - onAnnuler(): void - { - this.dialogRef.close("annulation"); - } - - - checkError(): void - { - if(this.goToCreatePlaylist && (this.newPlaylistName === "")) { - this.errorMessage = "Le nom ne peut pas être vide" ; - this.hasError = true; - } - else if(this.goToCreatePlaylist && this.tabNomPlaylist.includes(this.newPlaylistName)){ - this.errorMessage = "Ce nom est déjà utilisé" ; - this.hasError = true; - } - else { - this.hasError = false; - this.errorMessage = "" ; - } - } - -} diff --git a/userAndAdvertiser/src/app/user/utils/services/addVideoToPlaylists/add-video-to-playlists.service.spec.ts b/userAndAdvertiser/src/app/user/utils/services/addVideoToPlaylists/add-video-to-playlists.service.spec.ts deleted file mode 100644 index 6097218..0000000 --- a/userAndAdvertiser/src/app/user/utils/services/addVideoToPlaylists/add-video-to-playlists.service.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { AddVideoToPlaylistsService } from './add-video-to-playlists.service'; - -describe('PlaylistService', () => { - let service: AddVideoToPlaylistsService; - - beforeEach(() => { - TestBed.configureTestingModule({}); - service = TestBed.inject(AddVideoToPlaylistsService); - }); - - it('should be created', () => { - expect(service).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/user/utils/services/addVideoToPlaylists/add-video-to-playlists.service.ts b/userAndAdvertiser/src/app/user/utils/services/addVideoToPlaylists/add-video-to-playlists.service.ts deleted file mode 100644 index e9df3c4..0000000 --- a/userAndAdvertiser/src/app/user/utils/services/addVideoToPlaylists/add-video-to-playlists.service.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { Injectable } from '@angular/core'; -import {MatDialog} from "@angular/material/dialog"; -import {PopupAddVideoToPlaylistsComponent} from "../../components/popup-add-video-to-playlists/popup-add-video-to-playlists.component"; -import {MatSnackBar} from "@angular/material/snack-bar"; -import {MessageService} from "../../../../utils/message/message.service"; - - - -@Injectable({ - providedIn: 'root' -}) -export class AddVideoToPlaylistsService -{ - private _idVideo: string = "" ; - private videoId: string = "" ; - private source: string = "" ; - private interest: string = "" ; - - - constructor( private messageService: MessageService, - public dialog: MatDialog, - private snackBar: MatSnackBar ) { } - - - run(videoId: string, source: string, interest: string): void - { - this.videoId = videoId; - this.source = source; - this.interest = interest; - - const data = { source: this.source, interest: this.interest }; - this.messageService - .post("video/create/"+this.videoId, data) - .subscribe(ret => this.afterCreatingVideo(ret), err => this.afterCreatingVideo(err)); - } - - - private afterCreatingVideo(retour: any): void - { - if(retour.status !== "success") { - console.log(retour); - } - else { - this._idVideo = retour.data.id; - this.messageService - .get('playlist/findAll') - .subscribe( ret => this.afterReceivingPlaylists(ret), ret => this.afterReceivingPlaylists(ret) ); - } - } - - - - private afterReceivingPlaylists(retour: any): void - { - if(retour.status !== "success") { - console.log(retour); - } - else - { - const config = { - width: '30%', - data: { - _idVideo: this._idVideo, - videoId: this.videoId, - source: this.source, - interest: this.interest, - playlists: retour.data.filter(x => x.isActive === true) - } - }; - this.dialog - .open(PopupAddVideoToPlaylistsComponent, config) - .afterClosed() - .subscribe(retour => this.afterClosingDialog(retour)); - } - } - - - - private afterClosingDialog(retour): void - { - let message = "" ; - switch (retour) - { - case "error": - message = "Echec de l'opération ❌" ; - break; - case "success": - message = "La vidéo a bien été ajoutée ✔" ; - break; - case "annulation": - case null: - case undefined: - message = "Opération annulée" ; - break; - } - const config = { duration: 1000, panelClass: "custom-class" }; - this.snackBar.open( message, "", config); - } - -} diff --git a/userAndAdvertiser/src/app/user/watching/page-watching-video/page-watching-video.component.html b/userAndAdvertiser/src/app/user/watching/page-watching-video/page-watching-video.component.html deleted file mode 100644 index 9cf8392..0000000 --- a/userAndAdvertiser/src/app/user/watching/page-watching-video/page-watching-video.component.html +++ /dev/null @@ -1,233 +0,0 @@ - - - -
-
- - -
- -
- - - - -
- - -
-
- - -
-
- - -
- - -   - - logo - -   - - - -   - - logo - -   - -
- -
- - - - -
- - -
- - - -

- -
-
- - - - - - - -
- - -
- -
- - -
-
-
- - -
- -
- -
-
- - - - - - - -
- - -
- -
- - -
-
-
- - -
-
-
- -
-
- - - - - - - - - -
- - -
- -
- - -
- -
- -
- - - -
- - -
- ytb - dlm -
  {{video.title}}
-
- - -
- -
- - -
- Vues: - {{video.views | number: '1.0-0'}} -
- - -
- Date de publication: - {{ video.publishedAt | date:'dd/LL/YYYY à HH:mm:ss' }} -
- - -
-
- Description - expand_more - expand_less -
-
- {{video.description}} -
-
- -
- -
- - - - - - - -
- - -
- {{playlist.name}} -
- - - -
-
-
-
- - -
-
-
{{video0.title}}
-
- - {{video.views | number: '1.0-0'}} vues -
- - Publiée le {{ video.publishedAt | date:'dd/LL/YYYY à HH:mm:ss' }} - -
-
-
-
- - - - - -
-
diff --git a/userAndAdvertiser/src/app/user/watching/page-watching-video/page-watching-video.component.scss b/userAndAdvertiser/src/app/user/watching/page-watching-video/page-watching-video.component.scss deleted file mode 100644 index d3f10e8..0000000 --- a/userAndAdvertiser/src/app/user/watching/page-watching-video/page-watching-video.component.scss +++ /dev/null @@ -1,159 +0,0 @@ -.lightTheme { - color: black; - border-color: black; -} -.darkTheme { - color: white; - border-color: white; -} -.myContainer { - text-align: center; - max-width: 100vw; - height: 100vh; - overflow-x: hidden; - overflow-y: scroll; -} - -//-------------------------------------------------------------------------------------------- - -.inputSearchBar { - width: 40%; - font-size: large; - border-bottom: 10px; - border-radius: 5px; -} - -//-------------------------------------------------------------------------------------------- -// --- Playlist --- - -.playlistContainer { - border: solid 1px black; - width: 98%; - border-top-right-radius: 10px; - border-top-left-radius: 10px; -} - -.topBorder { - margin: 0px 0px 0px 0px; - //background-color: #dcdcdc; - background: linear-gradient(top, rgba(38,38,38,0.8), #e6e6e6 25%, #fff 38%, #c5c5c5 87%, rgba(38,38,38,0.8)); - background: -webkit-linear-gradient(top, #c5c5c5, #e6e6e6 25%, #fff 38%, #c5c5c5 87%, #c5c5c5); - text-align: left; - padding: 5px 0px 5px 5px; - border-bottom: solid 1px black; - border-top-right-radius: 10px; - border-top-left-radius: 10px; -} - -.listVideoContainer { - height: 70vh; - background-color: white; - overflow-y: scroll; -} - -.videoCell { - margin: 0px 0px 0px 0px; - padding: 10px 0px 10px 10px; - border-bottom: solid 1px black; - cursor: pointer; -} -.videoCell:hover { - background-color: #f0f0f0; -} - -.videoCellFocus { - background-color: #e6e6e6; -} -.videoCellFocus:hover { - background-color: #e6e6e6; -} - - -// ---- - -.imgsContainer { - position: relative; - width: 13vw; - height: 10vh; - float: left; -} - -.imgVideo { - border: solid 1px black; - width: 13vw; - height: 10vh; - padding: 0px 0px 0px 0px; -} - -.imgPlay { - position: absolute; - margin-left: 6vw; - width: 2vw; - margin-top: 3vh; - height: 4vh; - padding: 0px 0px 0px 0px; -} - -// ---- - -.infoContainer { - display: table-cell; - margin-left: 13vw; - height: 10vh; - padding-left: 5px; - vertical-align: middle; -} - -.titleContainer { - font-weight: bold; - text-align: left; -} - -.viewsContainer { - text-align: left; - display: flex; - align-items: center; - font-size: x-small; - color: grey; -} -mat-icon { - vertical-align: middle; - //font-size: x-small; -} - -.publishedAtContainer { - text-align: left; - font-size: x-small; - color: grey; -} - - -// ---- - -.bottomBorder { - margin: 0px 0px 0px 0px; - background-color: #dcdcdc; - border-top: solid 1px black; - border-bottom: solid 1px black; - font-size: large; -} - - -// ------------------------------------------------------------------------- - - -// aura -::ng-deep .mat-checkbox-ripple .mat-ripple-element { - background-color: grey !important; -} - -// contenu coche -::ng-deep .mat-checkbox-checked.mat-accent .mat-checkbox-background { - background-color: black !important; -} - -// indeterminate -::ng-deep .mat-checkbox .mat-checkbox-frame { - border: solid 1px black !important; - background-color: white !important; -} diff --git a/userAndAdvertiser/src/app/user/watching/page-watching-video/page-watching-video.component.spec.ts b/userAndAdvertiser/src/app/user/watching/page-watching-video/page-watching-video.component.spec.ts deleted file mode 100644 index 6790456..0000000 --- a/userAndAdvertiser/src/app/user/watching/page-watching-video/page-watching-video.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { PageWatchingVideoComponent } from './page-watching-video.component'; - -describe('PageWatchingVideoComponent', () => { - let component: PageWatchingVideoComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ PageWatchingVideoComponent ] - }) - .compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(PageWatchingVideoComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/user/watching/page-watching-video/page-watching-video.component.ts b/userAndAdvertiser/src/app/user/watching/page-watching-video/page-watching-video.component.ts deleted file mode 100644 index 4115a7a..0000000 --- a/userAndAdvertiser/src/app/user/watching/page-watching-video/page-watching-video.component.ts +++ /dev/null @@ -1,258 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import {ActivatedRoute, Router} from "@angular/router"; -import {AddVideoToPlaylistsService} from "../../utils/services/addVideoToPlaylists/add-video-to-playlists.service"; -import {DomSanitizer, SafeResourceUrl} from "@angular/platform-browser"; -import {HttpParams} from "@angular/common/http"; -import {MessageService} from "../../../utils/message/message.service"; -import {ThemeService} from "../../../utils/theme/theme.service"; - - - -let TAB_PLATEFORM = [ - { name: "youtube", isSelected: false }, - { name: "dailymotion", isSelected: false } -]; - - - -@Component({ - selector: 'app-page-watching-video', - templateUrl: './page-watching-video.component.html', - styleUrls: ['./page-watching-video.component.scss'] -}) -export class PageWatchingVideoComponent implements OnInit -{ - tabPlateform = TAB_PLATEFORM; - sources: string = ""; - video = { - title: "", - videoId: "", - views: 0, - publishedAt: null, - description: "", - source: "", - interest: "" - }; - search: string = ""; - - ad1: any; - ad2: any; - from: string = ""; - - playlist: any; - videosInPlaylist: any[] = []; - - paramsFromOldPage ; - - hiddenDescription: boolean = true; - iframeStyle: string = ""; - containerStyle: string = ""; - - - constructor( private messageService: MessageService, - public themeService: ThemeService, - private activatedRoute: ActivatedRoute, - private router: Router, - private _sanitizer: DomSanitizer, - private addVideoToPlaylistsService: AddVideoToPlaylistsService ) { } - - - - ngOnInit(): void - { - // Ask for videos - this.activatedRoute - .queryParams - .subscribe(paramsFromOldPage => { - - this.paramsFromOldPage = paramsFromOldPage; - const videoId = paramsFromOldPage.videoId; - let source = paramsFromOldPage.source; - - let params = new HttpParams(); - if(source === "Youtube") source = "yt"; - else if(source === "Dailymotion") source = "dm" ; - params = params.append("source", source); - this.messageService - .get("video/get/"+videoId, params) - .subscribe(ret => this.findVideoCallback(ret), err => this.findVideoCallback(err)); - }); - - - // Ask for adverts - let params = new HttpParams(); - params = params.append("quantity", 2); - this.messageService - .get("user/ad", params) - .subscribe(ret => this.findAdCallback(ret), err => this.findAdCallback(err)); - - - // Si on vient de la page "search" - if(this.router.url.includes("search")) - { - this.from = "search" ; - this.activatedRoute - .queryParams - .subscribe(paramsFromOldPage => { - if(paramsFromOldPage.hasOwnProperty("search")) this.search = paramsFromOldPage.search; - if(paramsFromOldPage.hasOwnProperty("sources")) { - this.sources = paramsFromOldPage.sources; - if(this.sources === "yt") { - this.tabPlateform[0].isSelected = true; - this.tabPlateform[1].isSelected = false; - } - else if(this.sources === "dm") { - this.tabPlateform[0].isSelected = false; - this.tabPlateform[1].isSelected = true; - } - else if(this.sources === "yt,dm") { - this.tabPlateform[0].isSelected = true; - this.tabPlateform[1].isSelected = true; - } - } - }); - } - // si on vient de la page "myPlaylists" - else if(this.router.url.includes("myPlaylists")) - { - this.from = "myPlaylists"; - this.activatedRoute - .queryParams - .subscribe(paramsFromOldPage => { - const _idPlaylist = paramsFromOldPage._idPlaylist; - this.messageService - .get("playlist/findOne/"+_idPlaylist) - .subscribe(ret => this.afterReceivingPlaylistWithVideo(ret), err => this.afterReceivingPlaylistWithVideo(err)); - }); - - } - // si on vient de la page "history" - else if(this.router.url.includes("history")) this.from = "history"; - - - // style - if(this.from === 'search' || this.from === 'history') { - this.containerStyle = "margin: 0 auto; width: 64vw;" ; - this.iframeStyle = "width: 64vw; height: 60vh;" ; - } - else { - this.containerStyle = "margin: 0 auto; width: 48vw;" ; - this.iframeStyle = "width: 48vw; height: 45vh;" ; - } - } - - - - findVideoCallback(retour: any): void - { - if(retour.status !== "success") { - console.log("findVideoCallback: "); - console.log(retour); - } - else { - this.video = retour.data; - } - } - - - findAdCallback(retour: any): void - { - if(retour.status !== "success") { - console.log("findAdCallback: "); - console.log(retour); - } - else { - this.ad1 = retour.data[0]; - this.ad2 = retour.data[1]; - } - } - - - afterReceivingPlaylistWithVideo(retour: any): void - { - if(retour.status !== "success") { - console.log("afterReceivingPlaylistWithVideo"); - console.log(retour); - } - else { - this.playlist = retour.data; - this.videosInPlaylist = retour.data.videos; - } - } - - - onSearch() - { - if(this.tabPlateform[0].isSelected && this.tabPlateform[1].isSelected) this.sources = "yt,dm" ; - else if((!this.tabPlateform[0].isSelected) && this.tabPlateform[1].isSelected) this.sources = "dm" ; - else if(this.tabPlateform[0].isSelected && (!this.tabPlateform[1].isSelected)) this.sources = "yt" ; - else this.sources = "" ; - let options = { - queryParams: { - search: this.search, - sources: this.sources, - indexPage: 0, - } - }; - this.router.navigate(['/user/search'], options); - } - - - onAddToPlaylist(): void - { - this.addVideoToPlaylistsService.run(this.video.videoId, this.video.source, this.video.interest); - } - - - onRetour(): void - { - let url: string[] = []; - let options = {}; - - if(this.from === 'search') - { - url = ['/user/search']; - options = { - queryParams: { - search: this.paramsFromOldPage.search, - sources: this.paramsFromOldPage.sources, - indexPage: this.paramsFromOldPage.indexPage, - } - }; - } - else if(this.from === 'myPlaylists') url = ["/user/myPlaylists"]; - else if(this.from === 'history') url = ["/user/history"]; - - this.router.navigate(url, options); - } - - - safeUrl(videoId: string, source: string): SafeResourceUrl - { - let videoUrl = "" ; - if(source === 'Youtube') videoUrl = "https://www.youtube.com/embed/" + videoId + "?autoplay=1"; - else if(source === 'Dailymotion') videoUrl = "https://www.dailymotion.com/embed/video/" + videoId + "?autoplay=true"; - return this._sanitizer.bypassSecurityTrustResourceUrl(videoUrl); - } - - - // retourne la classe CSS de videoCell - getClassOfVideoCell(video0): string - { - if(video0 === this.video) return "videoCell videoCellFocus" ; - else return "videoCell" ; - } - - - onEnterOnSearchBar(event) - { - if(event.key === 'Enter') this.onSearch(); - } - - - playlistExists(): boolean - { - return ((this.playlist !== null) && (this.playlist !== undefined)); - } - -} diff --git a/userAndAdvertiser/src/app/utils/message/message.service.spec.ts b/userAndAdvertiser/src/app/utils/message/message.service.spec.ts deleted file mode 100644 index 1db761b..0000000 --- a/userAndAdvertiser/src/app/utils/message/message.service.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { MessageService } from './message.service'; - -describe('MessageService', () => { - let service: MessageService; - - beforeEach(() => { - TestBed.configureTestingModule({}); - service = TestBed.inject(MessageService); - }); - - it('should be created', () => { - expect(service).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/utils/message/message.service.ts b/userAndAdvertiser/src/app/utils/message/message.service.ts deleted file mode 100644 index c20d5b1..0000000 --- a/userAndAdvertiser/src/app/utils/message/message.service.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { Injectable } from '@angular/core'; -import {HttpClient, HttpParams} from "@angular/common/http"; -import {Observable} from "rxjs"; -import {environment} from "../../../environments/environment"; - -@Injectable({ - providedIn: 'root' -}) -export class MessageService -{ - - constructor( private http: HttpClient ) { } - - post(url: string, data: any): Observable - { - const urlComplete = environment.debutUrl + url ; - return this.http.post(urlComplete, data, {withCredentials: true}); - } - - get(url: string, params:HttpParams = new HttpParams()): Observable - { - const urlComplete = environment.debutUrl + url ; - return this.http.get(urlComplete,{ withCredentials: true, params: params }); - } - - put(url: string, data: any): Observable - { - const urlComplete = environment.debutUrl + url ; - return this.http.put(urlComplete, data, {withCredentials: true}); - } - - delete(url: string): Observable - { - const urlComplete = environment.debutUrl + url ; - return this.http.delete(urlComplete,{withCredentials: true}); - } - -} diff --git a/userAndAdvertiser/src/app/utils/profil/profil.service.spec.ts b/userAndAdvertiser/src/app/utils/profil/profil.service.spec.ts deleted file mode 100644 index 5cee000..0000000 --- a/userAndAdvertiser/src/app/utils/profil/profil.service.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { ProfilService } from './profil.service'; - -describe('ProfilService', () => { - let service: ProfilService; - - beforeEach(() => { - TestBed.configureTestingModule({}); - service = TestBed.inject(ProfilService); - }); - - it('should be created', () => { - expect(service).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/utils/profil/profil.service.ts b/userAndAdvertiser/src/app/utils/profil/profil.service.ts deleted file mode 100644 index 4bbe5ea..0000000 --- a/userAndAdvertiser/src/app/utils/profil/profil.service.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Injectable } from '@angular/core'; - -@Injectable({ - providedIn: 'root' -}) -export class ProfilService -{ - - getId(): string - { - return localStorage.getItem('id'); - } - - getProfileImageUrl(): string - { - return localStorage.getItem('profileImageUrl'); - } - - setId(id: string): void - { - localStorage.setItem('id', id); - } - - setProfileImageUrl(profileImageUrl: string): void - { - localStorage.setItem('profileImageUrl', profileImageUrl); - } - -} diff --git a/userAndAdvertiser/src/app/utils/theme/theme.service.spec.ts b/userAndAdvertiser/src/app/utils/theme/theme.service.spec.ts deleted file mode 100644 index 1c2957b..0000000 --- a/userAndAdvertiser/src/app/utils/theme/theme.service.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { ThemeService } from './theme.service'; - -describe('ThemeService', () => { - let service: ThemeService; - - beforeEach(() => { - TestBed.configureTestingModule({}); - service = TestBed.inject(ThemeService); - }); - - it('should be created', () => { - expect(service).toBeTruthy(); - }); -}); diff --git a/userAndAdvertiser/src/app/utils/theme/theme.service.ts b/userAndAdvertiser/src/app/utils/theme/theme.service.ts deleted file mode 100644 index 00768e5..0000000 --- a/userAndAdvertiser/src/app/utils/theme/theme.service.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Injectable } from '@angular/core'; - -@Injectable({ - providedIn: 'root' -}) -export class ThemeService -{ - - isLightTheme = true; - - getClassTheme(): string - { - if(this.isLightTheme) return "lightTheme" ; - else return "darkTheme" - } - -} diff --git a/userAndAdvertiser/src/assets/.gitkeep b/userAndAdvertiser/src/assets/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/userAndAdvertiser/src/assets/darkBackground.webp b/userAndAdvertiser/src/assets/darkBackground.webp deleted file mode 100644 index 0d0692b8c331ccbacf8631b679686525fbb5c85a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 712 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 C8Oa_1 diff --git a/userAndAdvertiser/src/assets/logo.png b/userAndAdvertiser/src/assets/logo.png deleted file mode 100644 index 93b93755e49963d09c63cbd0df33669376c8f90d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5798 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 diff --git a/userAndAdvertiser/src/assets/logo_plateforms/dailymotion.png b/userAndAdvertiser/src/assets/logo_plateforms/dailymotion.png deleted file mode 100644 index d35ee8a8b0e209615e57966d3d6f108844b2135d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6478 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 diff --git a/userAndAdvertiser/src/assets/play.png b/userAndAdvertiser/src/assets/play.png deleted file mode 100644 index 194f73beb22f040cf7ef156fe3f6403c1b5323e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3586 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 AOaK4? diff --git a/userAndAdvertiser/src/environments/environment.prod.ts b/userAndAdvertiser/src/environments/environment.prod.ts deleted file mode 100644 index 8d9f516..0000000 --- a/userAndAdvertiser/src/environments/environment.prod.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const environment = { - production: true, - debutUrl: "https://polynotfound.herokuapp.com/api/" -}; diff --git a/userAndAdvertiser/src/environments/environment.ts b/userAndAdvertiser/src/environments/environment.ts deleted file mode 100644 index 6c4970f..0000000 --- a/userAndAdvertiser/src/environments/environment.ts +++ /dev/null @@ -1,17 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: false, - debutUrl: "http://127.0.0.1:3000/api/" -}; - -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/userAndAdvertiser/src/favicon.ico b/userAndAdvertiser/src/favicon.ico deleted file mode 100644 index 997406ad22c29aae95893fb3d666c30258a09537..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 948 zcmV;l155mgP)CBYU7IjCFmI-B}4sMJt3^s9NVg!P0 z6hDQy(L`XWMkB@zOLgN$4KYz;j0zZxq9KKdpZE#5@k0crP^5f9KO};h)ZDQ%ybhht z%t9#h|nu0K(bJ ztIkhEr!*UyrZWQ1k2+YkGqDi8Z<|mIN&$kzpKl{cNP=OQzXHz>vn+c)F)zO|Bou>E z2|-d_=qY#Y+yOu1a}XI?cU}%04)zz%anD(XZC{#~WreV!a$7k2Ug`?&CUEc0EtrkZ zL49MB)h!_K{H(*l_93D5tO0;BUnvYlo+;yss%n^&qjt6fZOa+}+FDO(~2>G z2dx@=JZ?DHP^;b7*Y1as5^uphBsh*s*z&MBd?e@I>-9kU>63PjP&^#5YTOb&x^6Cf z?674rmSHB5Fk!{Gv7rv!?qX#ei_L(XtwVqLX3L}$MI|kJ*w(rhx~tc&L&xP#?cQow zX_|gx$wMr3pRZIIr_;;O|8fAjd;1`nOeu5K(pCu7>^3E&D2OBBq?sYa(%S?GwG&_0-s%_v$L@R!5H_fc)lOb9ZoOO#p`Nn`KU z3LTTBtjwo`7(HA6 z7gmO$yTR!5L>Bsg!X8616{JUngg_@&85%>W=mChTR;x4`P=?PJ~oPuy5 zU-L`C@_!34D21{fD~Y8NVnR3t;aqZI3fIhmgmx}$oc-dKDC6Ap$Gy>a!`A*x2L1v0 WcZ@i?LyX}70000 - - - - StreamNotFound - - - - - - - - diff --git a/userAndAdvertiser/src/main.ts b/userAndAdvertiser/src/main.ts deleted file mode 100644 index c7b673c..0000000 --- a/userAndAdvertiser/src/main.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic().bootstrapModule(AppModule) - .catch(err => console.error(err)); diff --git a/userAndAdvertiser/src/polyfills.ts b/userAndAdvertiser/src/polyfills.ts deleted file mode 100644 index 373f538..0000000 --- a/userAndAdvertiser/src/polyfills.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * This file includes polyfills needed by Angular and is loaded before the app. - * You can add your own extra polyfills to this file. - * - * This file is divided into 2 sections: - * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. - * 2. Application imports. Files imported after ZoneJS that should be loaded before your main - * file. - * - * The current setup is for so-called "evergreen" browsers; the last versions of browsers that - * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), - * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** - * IE11 requires the following for NgClass support on SVG elements - */ -// import 'classlist.js'; // Run `npm install --save classlist.js`. - -/** - * Web Animations `@angular/platform-browser/animations` - * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. - * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). - */ -// import 'web-animations-js'; // Run `npm install --save web-animations-js`. - -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ - -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ -import 'zone.js'; // Included with Angular CLI. - - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ diff --git a/userAndAdvertiser/src/styles.scss b/userAndAdvertiser/src/styles.scss deleted file mode 100644 index 90d4ee0..0000000 --- a/userAndAdvertiser/src/styles.scss +++ /dev/null @@ -1 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ diff --git a/userAndAdvertiser/src/test.ts b/userAndAdvertiser/src/test.ts deleted file mode 100644 index b4dd603..0000000 --- a/userAndAdvertiser/src/test.ts +++ /dev/null @@ -1,27 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: { - context(path: string, deep?: boolean, filter?: RegExp): { - keys(): string[]; - (id: string): T; - }; -}; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting(), - { teardown: { destroyAfterEach: true }}, -); - -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/userAndAdvertiser/tsconfig.app.json b/userAndAdvertiser/tsconfig.app.json deleted file mode 100644 index 82d91dc..0000000 --- a/userAndAdvertiser/tsconfig.app.json +++ /dev/null @@ -1,15 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/app", - "types": [] - }, - "files": [ - "src/main.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.d.ts" - ] -} diff --git a/userAndAdvertiser/tsconfig.json b/userAndAdvertiser/tsconfig.json deleted file mode 100644 index 4a4dc62..0000000 --- a/userAndAdvertiser/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "compileOnSave": false, - "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist/out-tsc", - "sourceMap": true, - "declaration": false, - "downlevelIteration": true, - "experimentalDecorators": true, - "moduleResolution": "node", - "importHelpers": true, - "target": "es2015", - "module": "es2020", - "lib": [ - "es2018", - "dom" - ] - }, - "angularCompilerOptions": { - "enableI18nLegacyMessageIdFormat": false - } -} diff --git a/userAndAdvertiser/tsconfig.spec.json b/userAndAdvertiser/tsconfig.spec.json deleted file mode 100644 index 092345b..0000000 --- a/userAndAdvertiser/tsconfig.spec.json +++ /dev/null @@ -1,18 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] - }, - "files": [ - "src/test.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] -}