mirror of
https://framagit.org/framasoft/framadate/funky-framadate-front.git
synced 2023-08-25 13:53:14 +02:00
Compare commits
No commits in common. "09a507109a503a015594d92c9f807141f6f6030c" and "f66603d18712cf4fc3f4cbbcd4948a274e6e7784" have entirely different histories.
09a507109a
...
f66603d187
1
.gitignore
vendored
1
.gitignore
vendored
@ -5,7 +5,6 @@
|
|||||||
/tmp
|
/tmp
|
||||||
/out-tsc/
|
/out-tsc/
|
||||||
documentation
|
documentation
|
||||||
/site/
|
|
||||||
# Only exists if Bazel was run
|
# Only exists if Bazel was run
|
||||||
/bazel-out
|
/bazel-out
|
||||||
|
|
||||||
|
@ -60,6 +60,6 @@ build:
|
|||||||
# artifacts:
|
# artifacts:
|
||||||
# paths:
|
# paths:
|
||||||
# - public
|
# - public
|
||||||
# expire_in: 30 dateChoices
|
# expire_in: 30 dateList
|
||||||
# only:
|
# only:
|
||||||
# - master
|
# - master
|
||||||
|
@ -25,6 +25,8 @@
|
|||||||
"assets": ["src/favicon.ico", "src/assets"],
|
"assets": ["src/favicon.ico", "src/assets"],
|
||||||
"styles": [
|
"styles": [
|
||||||
"node_modules/fork-awesome/css/fork-awesome.min.css",
|
"node_modules/fork-awesome/css/fork-awesome.min.css",
|
||||||
|
"node_modules/primeng/resources/themes/nova-light/theme.css",
|
||||||
|
"node_modules/primeng/resources/primeng.min.css",
|
||||||
"node_modules/bulma-switch/dist/css/bulma-switch.min.css",
|
"node_modules/bulma-switch/dist/css/bulma-switch.min.css",
|
||||||
"src/styles.scss"
|
"src/styles.scss"
|
||||||
],
|
],
|
||||||
|
@ -1,551 +0,0 @@
|
|||||||
## v0.6.0 (2021-05-17)
|
|
||||||
|
|
||||||
* add mkdoc for all documentation [View](https://bitbucket.org/projects/test/repos/my-project/commits/6e0202a5a42256f4e2b49f746d7888a6608214f8)
|
|
||||||
* add changelog script [View](https://bitbucket.org/projects/test/repos/my-project/commits/b3833ec830100a9197fb9cb84cb4a9670f21e42d)
|
|
||||||
* 1.1.0 [View](https://bitbucket.org/projects/test/repos/my-project/commits/38388946143eb7881912023d4d3f2dc4403c62fe)
|
|
||||||
* messing with package version [View](https://bitbucket.org/projects/test/repos/my-project/commits/08ab0482dd5e25cb8152b92323660c35228c215d)
|
|
||||||
* 0.6.0 [View](https://bitbucket.org/projects/test/repos/my-project/commits/52792ba6472e4be43d2ce750c87d3c9097155da6)
|
|
||||||
|
|
||||||
|
|
||||||
## v0.5.0 (2021-05-04)
|
|
||||||
|
|
||||||
* :zap: remove generated documentation from compodoc [View](https://bitbucket.org/projects/test/repos/my-project/commits/f358120516bbf027e53758c93a581f93bed3d10a)
|
|
||||||
* :book: merge documentation from the wiki in the folder doc [View](https://bitbucket.org/projects/test/repos/my-project/commits/c689a679e21e6e8fd4efff71ef95d555f9c59d82)
|
|
||||||
* :book: update contribute [View](https://bitbucket.org/projects/test/repos/my-project/commits/c4982267d2ae6980ef6f72694cb322ae8bec6092)
|
|
||||||
* :zap: ability to customize app title and app logo in header from environment vars. fixes #87 #88 #89. [View](https://bitbucket.org/projects/test/repos/my-project/commits/621101aa38e5732885aa184174cd1d97a157c49f)
|
|
||||||
* :book: move documentation to doc folder [View](https://bitbucket.org/projects/test/repos/my-project/commits/70acabb056c61da806f565927e063dba66e7592e)
|
|
||||||
* :book: DOC : desired feature added in doc [View](https://bitbucket.org/projects/test/repos/my-project/commits/14d2a109d30d29a1a83d616d3e543d0cdf4bc084)
|
|
||||||
* :alien: i18n header menu, :gears: splits routes, :fix: RED theme fix in switch [View](https://bitbucket.org/projects/test/repos/my-project/commits/b4f496b08dbd2bdea757b9f2feb1007a81d8b86e)
|
|
||||||
* hop [View](https://bitbucket.org/projects/test/repos/my-project/commits/6db96397ea4fc7735f4a921cd8a9a912dafa2221)
|
|
||||||
* remove some broken automation [View](https://bitbucket.org/projects/test/repos/my-project/commits/5f072fe3abee9c0b5cc5126a11188cd5b70a58c7)
|
|
||||||
* only send list of polls by email to user [View](https://bitbucket.org/projects/test/repos/my-project/commits/e5214fdd9757a207ee01a0e263c1ab63df1edc12)
|
|
||||||
* move dev menu slider and show it only in dev mode env [View](https://bitbucket.org/projects/test/repos/my-project/commits/6059533c3635684d8422c2bf1c12a975390af5b4)
|
|
||||||
* start form [View](https://bitbucket.org/projects/test/repos/my-project/commits/8cac3d18621c35f7f3d73fcc699017f04cefdc6b)
|
|
||||||
* add form array for choices [View](https://bitbucket.org/projects/test/repos/my-project/commits/d9301559ef99902c3901afd0ee4a6a5035e77b81)
|
|
||||||
* :hammer: test the build with gitlab CI [View](https://bitbucket.org/projects/test/repos/my-project/commits/41fd153991fb1e324664cd27b9c2d4aca8a4f408)
|
|
||||||
* add variables from env in footer [View](https://bitbucket.org/projects/test/repos/my-project/commits/b0026fabc471d34f718c8aff95fca2a33c0b3623)
|
|
||||||
* start combine choices array [View](https://bitbucket.org/projects/test/repos/my-project/commits/4bec5828b386b4be2d73837c97731997e1588106)
|
|
||||||
* dynamically add choices [View](https://bitbucket.org/projects/test/repos/my-project/commits/8c119739a72fc6767e46791c2341656f53e7fc04)
|
|
||||||
* add all config controls [View](https://bitbucket.org/projects/test/repos/my-project/commits/e5b8d5b65ec32f170610f0186ed08b6fc23a1568)
|
|
||||||
* multiple choices for creation [View](https://bitbucket.org/projects/test/repos/my-project/commits/fa534af3ab200835a16f38c2e7b5998cbadb45f6)
|
|
||||||
* :alien: i18n import po files from previous framadate version [View](https://bitbucket.org/projects/test/repos/my-project/commits/a5b0d2c2d45aa4b58fdd08669568dd7f22b5d795)
|
|
||||||
* :alien: i18n add extraction lib [View](https://bitbucket.org/projects/test/repos/my-project/commits/60eeddbf21a575e84f054afe5defe54e258bb54f)
|
|
||||||
* :bug: select lang wigthout lifecycle bug [View](https://bitbucket.org/projects/test/repos/my-project/commits/10c1930e4d5c4be1ec7d6af208dc939705020e89)
|
|
||||||
* reorder questions [View](https://bitbucket.org/projects/test/repos/my-project/commits/8df2b95c1e287ab7a3a4f0127b8ec616260126dc)
|
|
||||||
* translate homepage [View](https://bitbucket.org/projects/test/repos/my-project/commits/d07f51dd910ad243e030cfd1fdba041f8264d1e2)
|
|
||||||
* togglable advanced options [View](https://bitbucket.org/projects/test/repos/my-project/commits/d3042b3723839f6b4710b77024f0f0fb10a87455)
|
|
||||||
* add keybaord shortcuts on array for choices [View](https://bitbucket.org/projects/test/repos/my-project/commits/4769ecefc3b6b59887baec2625bd5e35f23f6554)
|
|
||||||
* :zap: more settings for admin form with time and answers groups [View](https://bitbucket.org/projects/test/repos/my-project/commits/82910a9aae0750c80b87a04bd1c6e6634e68f05b)
|
|
||||||
* add time to date func [View](https://bitbucket.org/projects/test/repos/my-project/commits/94162c796cf5016634eccdeb18fc132711055eb2)
|
|
||||||
* :alien: convert sentences from framadate1 to json files [View](https://bitbucket.org/projects/test/repos/my-project/commits/a4c2387e1257e9684147bb7af9184d4550fa2b8e)
|
|
||||||
* add sentences in fr and en from framadate 1 [View](https://bitbucket.org/projects/test/repos/my-project/commits/3700ede667e90a43eb39f301a396feacbe05d570)
|
|
||||||
* :art: add pictures from undraw, translate sentences on homepage [View](https://bitbucket.org/projects/test/repos/my-project/commits/04f04d622dea3f963273eb038bc1c99e2832f1ca)
|
|
||||||
* reuse automatic slug from poll config in form [View](https://bitbucket.org/projects/test/repos/my-project/commits/3306e7c29d4f811a6ba624595457768e8c237bcc)
|
|
||||||
* adding reodering of choices beginning [View](https://bitbucket.org/projects/test/repos/my-project/commits/1745762ba3125c7ad054284e4fd6b4020482d6f2)
|
|
||||||
* :zap: add api version config in env [View](https://bitbucket.org/projects/test/repos/my-project/commits/1167b692eaea2ffe711a7a56797ed3017624a184)
|
|
||||||
* add fields to config of poll [View](https://bitbucket.org/projects/test/repos/my-project/commits/4eef4c4220a4b8523e6f7a430afda12c563edaae)
|
|
||||||
* try to get the list of polls [View](https://bitbucket.org/projects/test/repos/my-project/commits/1b49231d924d0c3a69d43d5c02645b4d2621d50c)
|
|
||||||
* create success page and route [View](https://bitbucket.org/projects/test/repos/my-project/commits/03f7c49c519e2db062de3d64a1cfdd8c1f109e05)
|
|
||||||
* spacing buttons [View](https://bitbucket.org/projects/test/repos/my-project/commits/d4e5c614a9397fdd7feaa0dc6da1d1160ccd4c52)
|
|
||||||
* split of creation components [View](https://bitbucket.org/projects/test/repos/my-project/commits/84b69a1366dacb521d4295c99eb630f636429ac4)
|
|
||||||
* homepage texts [View](https://bitbucket.org/projects/test/repos/my-project/commits/2d9f1f7d40468d0b2ba3634e7cdd6cbf3f1a8118)
|
|
||||||
* home page reorder and statistics, todo component [View](https://bitbucket.org/projects/test/repos/my-project/commits/5bac37a7905ba1ccd16bab3568a366bf8b9d9090)
|
|
||||||
* link to static pages [View](https://bitbucket.org/projects/test/repos/my-project/commits/1717f738d19e65c22d91b1f429cde654fb677ad0)
|
|
||||||
* include advanced choices and toggle visibility of sub component [View](https://bitbucket.org/projects/test/repos/my-project/commits/feb0de8270204c31cbb92f6a6420644cc1a99e9e)
|
|
||||||
* ordering base fields [View](https://bitbucket.org/projects/test/repos/my-project/commits/f96dc1f3c44b413eef1b64b4ff9ea8abca9fc34a)
|
|
||||||
* link to base config [View](https://bitbucket.org/projects/test/repos/my-project/commits/2d49389d117b8060fd343e7815b0894e4413667d)
|
|
||||||
* add choices for the future [View](https://bitbucket.org/projects/test/repos/my-project/commits/237984c04073efa133ee2fd5ba18ee90a9e16a0e)
|
|
||||||
* harmonizing poll default properties with payload and advanced config [View](https://bitbucket.org/projects/test/repos/my-project/commits/2a4219e14941679da323d1fd066d6fb6ca62e6f9)
|
|
||||||
* testing ciphering page [View](https://bitbucket.org/projects/test/repos/my-project/commits/40c0c3888902b046c9ab9f65549c57abbff5a1c3)
|
|
||||||
* fill poll config default [View](https://bitbucket.org/projects/test/repos/my-project/commits/7140072ecc6d624e6e660cf694ea5d6b4b5c6376)
|
|
||||||
* patch kind of poll with patchvalue [View](https://bitbucket.org/projects/test/repos/my-project/commits/77cf4c6d04b5a7c7689e834dcc166dd5eca56b22)
|
|
||||||
* advanced button change color when active [View](https://bitbucket.org/projects/test/repos/my-project/commits/ce00a3ce695e7e6728bdeace31a66cc17359dcab)
|
|
||||||
* translate calendar contents, space options for days [View](https://bitbucket.org/projects/test/repos/my-project/commits/2edb828aa3a1e0d9e39f4abc6eefc0e0ef06c96b)
|
|
||||||
* visual sections for date selection [View](https://bitbucket.org/projects/test/repos/my-project/commits/de679721d1047d8ee7d780b23f0298b47af7bb21)
|
|
||||||
* drag and drop time interval [View](https://bitbucket.org/projects/test/repos/my-project/commits/7ca87e28b44887138b0b8b05bde47cca9024d990)
|
|
||||||
* display hour ranges [View](https://bitbucket.org/projects/test/repos/my-project/commits/5f4c2e04af08c896f3fb64d56157d007600f6f04)
|
|
||||||
* use crypto lib [View](https://bitbucket.org/projects/test/repos/my-project/commits/1ab5255bfa2aff83774132965842e357eb8494e4)
|
|
||||||
* add lib crypto [View](https://bitbucket.org/projects/test/repos/my-project/commits/4df2e00cbe228a19b10821be5025c0b11aeb27da)
|
|
||||||
* copy button [View](https://bitbucket.org/projects/test/repos/my-project/commits/760bde7e3069e6c2f84724b05c80c7260f7fc2a7)
|
|
||||||
* easy ciphering working with and without salt [View](https://bitbucket.org/projects/test/repos/my-project/commits/3e0c1ff3750a5f986dd850b6a6b765e19b8a1ad5)
|
|
||||||
* mixed salt for ciphering [View](https://bitbucket.org/projects/test/repos/my-project/commits/0885df23df39b20fa8ee16aa7c2b3fb1c13a8ec3)
|
|
||||||
* spacing dev menu button [View](https://bitbucket.org/projects/test/repos/my-project/commits/51de2b2e028305eabfdb9c6bb91a5758aa815344)
|
|
||||||
* add md5 lib to ciphering page [View](https://bitbucket.org/projects/test/repos/my-project/commits/d72e7763da7e60d551b3ee585555bfa83e6ddd11)
|
|
||||||
* listing char codes [View](https://bitbucket.org/projects/test/repos/my-project/commits/e5411ab425368ce6e3a7b024e8d9fb711e041018)
|
|
||||||
* compute entropy [View](https://bitbucket.org/projects/test/repos/my-project/commits/ddf5b40ef45290430f2c681ae0368ee2b98abecf)
|
|
||||||
* resize table for entropy [View](https://bitbucket.org/projects/test/repos/my-project/commits/e32db4983d014403c97e93a3faebb7ab2e318a59)
|
|
||||||
* compare entropy with generated pass [View](https://bitbucket.org/projects/test/repos/my-project/commits/e9a9d1a959b8141bdb56fe01d8d0ae7bcf2c8b06)
|
|
||||||
* chiffrement matrice ok [View](https://bitbucket.org/projects/test/repos/my-project/commits/73ad7426ee1f1b1b31f252ea30d16a810272d792)
|
|
||||||
* hop [View](https://bitbucket.org/projects/test/repos/my-project/commits/54ece76c7e916aa919d9e5abaca69efd7c12968d)
|
|
||||||
* fix types [View](https://bitbucket.org/projects/test/repos/my-project/commits/7b5cf59b9979f0da70af0f0ba7dd07c743ec851d)
|
|
||||||
* update env for prod [View](https://bitbucket.org/projects/test/repos/my-project/commits/3c3dddafa52f520658a70291b66fd42505aeee48)
|
|
||||||
* fix some production build warnings [View](https://bitbucket.org/projects/test/repos/my-project/commits/2993fc5cb5204bfd35ddc393b6805176e150461b)
|
|
||||||
* add stats [View](https://bitbucket.org/projects/test/repos/my-project/commits/2af45ae72708bec310febde7cbcf33020a1b83f0)
|
|
||||||
* using hash routes [View](https://bitbucket.org/projects/test/repos/my-project/commits/e63bbab75565370cdafe1c374bea97f5d777c71f)
|
|
||||||
* hide some components [View](https://bitbucket.org/projects/test/repos/my-project/commits/f3f2d6623bb1bc7aa8d36d2144ac46a47c98470a)
|
|
||||||
* choice template questions [View](https://bitbucket.org/projects/test/repos/my-project/commits/21040df287ccb46e9384273b6a352378a1d4ba76)
|
|
||||||
* date selector as question answers [View](https://bitbucket.org/projects/test/repos/my-project/commits/4a89b715a9e9a9f058c64f3384bd115a89170138)
|
|
||||||
* add theming in vars with blue variation [View](https://bitbucket.org/projects/test/repos/my-project/commits/b2806371585ba1d1810bfbb2edc977264fd6ba5d)
|
|
||||||
* default colors [View](https://bitbucket.org/projects/test/repos/my-project/commits/a744bf9931e472afd6a01bbb343c19a6fe095b03)
|
|
||||||
* setup theme comments [View](https://bitbucket.org/projects/test/repos/my-project/commits/2562b21d2ff9686d8a4cc35645f7ebed81093cd3)
|
|
||||||
* add fetching a poll with a pass hash [View](https://bitbucket.org/projects/test/repos/my-project/commits/3850f3811c135005131bdffef8cd760fa9cb9fb5)
|
|
||||||
* manage consultation path [View](https://bitbucket.org/projects/test/repos/my-project/commits/6cb32cb2e19276e28ee3d6c5bc7777a00edfc8ea)
|
|
||||||
* display de sondage de démo [View](https://bitbucket.org/projects/test/repos/my-project/commits/21aa634ce52beeab60bfc402178840f1f2eb0769)
|
|
||||||
* montrer consultation et préciser si aucun vote [View](https://bitbucket.org/projects/test/repos/my-project/commits/56273946c3f598e58df960a56756d877d443ece7)
|
|
||||||
* display title on poll page [View](https://bitbucket.org/projects/test/repos/my-project/commits/d84809d62a032dbe37d8da746fec12fc486a7fca)
|
|
||||||
* style on selected items in consultation page [View](https://bitbucket.org/projects/test/repos/my-project/commits/0c08e802c9a98d4182853092d615b4fd5f4994b1)
|
|
||||||
* scroll to top on route change [View](https://bitbucket.org/projects/test/repos/my-project/commits/74a928800edd8d67cfc428eb67d27aaddc33cffa)
|
|
||||||
* send form in dev mode, fill title demo [View](https://bitbucket.org/projects/test/repos/my-project/commits/215178efa9c6a3bc5e07d11b97dd0109ab356899)
|
|
||||||
* add comment on display [View](https://bitbucket.org/projects/test/repos/my-project/commits/078f63f742d29e5c1cb7426560047830f165ea97)
|
|
||||||
* export results added, models updates [View](https://bitbucket.org/projects/test/repos/my-project/commits/1e90d92ab9f6c25643600a254d032c486516a692)
|
|
||||||
* transmettre l'information d'expiration du sondage au front [View](https://bitbucket.org/projects/test/repos/my-project/commits/163b89b03ffc11c277f916379cb5631b0256d3af)
|
|
||||||
* fix models for backend update [View](https://bitbucket.org/projects/test/repos/my-project/commits/e45b490c2fdbdff37e5a252a478091b52b287612)
|
|
||||||
* key created_at for comment, format date [View](https://bitbucket.org/projects/test/repos/my-project/commits/2d3457cf6fa872fe277dcff3a43b93d8be5353a7)
|
|
||||||
* show counters on answers and favourite answer [View](https://bitbucket.org/projects/test/repos/my-project/commits/0abf924caedeebe008292c230dae3a2af40f028f)
|
|
||||||
* display details too [View](https://bitbucket.org/projects/test/repos/my-project/commits/9a4a72a24c781e24f773462c8978cf59ded6821b)
|
|
||||||
* info in modal [View](https://bitbucket.org/projects/test/repos/my-project/commits/729dac95993b4997eae4691bcfaec2630714a8aa)
|
|
||||||
* fixes for building in prod [View](https://bitbucket.org/projects/test/repos/my-project/commits/7a0061eeb1d2018857a78dcff9674df2076c0999)
|
|
||||||
* stack of vote relié au formulaire de commentaire [View](https://bitbucket.org/projects/test/repos/my-project/commits/620a7b99fac22a6809149d753410f5bf885c0570)
|
|
||||||
* set choices and toggle votes in votestack [View](https://bitbucket.org/projects/test/repos/my-project/commits/f1e6b5955ee16f4ec65828f6bd48930b606b879e)
|
|
||||||
* display stack answer and toggle fluently between answers to votes [View](https://bitbucket.org/projects/test/repos/my-project/commits/4464a0af2cae1c9c9c25c6b1762d28634c3b4207)
|
|
||||||
* default value of vote added [View](https://bitbucket.org/projects/test/repos/my-project/commits/cbc4bd8f5d85b0a6f1e3bc797c47564cee5c4e62)
|
|
||||||
* choice button refacto [View](https://bitbucket.org/projects/test/repos/my-project/commits/3abef619c8ce77cc1f9ba014a952fbb96456b01d)
|
|
||||||
* send stack of votes button linked to api [View](https://bitbucket.org/projects/test/repos/my-project/commits/7a83beae8e5ca64c21759b3337de0ecb30c06937)
|
|
||||||
* trying to send vot stack but getting CORS issue [View](https://bitbucket.org/projects/test/repos/my-project/commits/30d4adec373ae2714b25d46e704beef73785cfc0)
|
|
||||||
* use httpclient [View](https://bitbucket.org/projects/test/repos/my-project/commits/e61542b6521722eafafb989dd88fa482ae07caac)
|
|
||||||
* default backend to framadate demo api [View](https://bitbucket.org/projects/test/repos/my-project/commits/b2b8056b7eb35fef9de30adc7c897ee6c5d2d2a5)
|
|
||||||
* add good hash in route [View](https://bitbucket.org/projects/test/repos/my-project/commits/d5bc5777b787060dfaa84c1ed7599bff272b5507)
|
|
||||||
* move old stuff [View](https://bitbucket.org/projects/test/repos/my-project/commits/fdcb7327f0b65a4ce8c7ae6f8a5bec9f5592c026)
|
|
||||||
* rename utils services [View](https://bitbucket.org/projects/test/repos/my-project/commits/b9181b5b3fe6b7163ffefbb0bea3e70a186bee53)
|
|
||||||
* auto send vote in dev mode [View](https://bitbucket.org/projects/test/repos/my-project/commits/3a89645e66b9445e61bf67c50805b9682a538931)
|
|
||||||
* manage mobile menu, and add poll title to page title [View](https://bitbucket.org/projects/test/repos/my-project/commits/31f0f19a9ae2120ac3394414e79649a44ee2de14)
|
|
||||||
* nav disable default show [View](https://bitbucket.org/projects/test/repos/my-project/commits/78a88d3163f73a161649a0ed17d4038f458d5bcc)
|
|
||||||
* nav items for demos in mobile menu [View](https://bitbucket.org/projects/test/repos/my-project/commits/69f8eac147f413a1f7bbb9c2d2b12b6526e63419)
|
|
||||||
* change icons for answer [View](https://bitbucket.org/projects/test/repos/my-project/commits/9e4d5187b523891568387526e1a7cc749d6a5a44)
|
|
||||||
* toast message on error send vote stack [View](https://bitbucket.org/projects/test/repos/my-project/commits/765299e1c3ae69bebfbad281592d9460ef4f9aa4)
|
|
||||||
* creation poll style, fill DTO for creation [View](https://bitbucket.org/projects/test/repos/my-project/commits/585d3a215e62ee115d0bace3c5bc0c6f650c2b59)
|
|
||||||
* auto save on dev env [View](https://bitbucket.org/projects/test/repos/my-project/commits/12a41b502217ce8c2f0df9673ca7a21f80550409)
|
|
||||||
* flatten form fields [View](https://bitbucket.org/projects/test/repos/my-project/commits/d08bba4fcb4ffbb5b4b28cd948babc21059b8bfe)
|
|
||||||
* advanced fields flattened [View](https://bitbucket.org/projects/test/repos/my-project/commits/e405a09c78af01fdb02a0fa7b4f75fc92cee7c34)
|
|
||||||
* splitting date choices with a separator [View](https://bitbucket.org/projects/test/repos/my-project/commits/975997b7675876f5596e34533e50d76f1c6c8809)
|
|
||||||
* group display of days [View](https://bitbucket.org/projects/test/repos/my-project/commits/86c0ff815f824b9119d36482cd85fc668eccf7cb)
|
|
||||||
* ability to toggle answers on grouped choices [View](https://bitbucket.org/projects/test/repos/my-project/commits/16db2a69cf687e2f99b9faec96e87c4d89d06458)
|
|
||||||
* update url to copy after creation [View](https://bitbucket.org/projects/test/repos/my-project/commits/bfdb18b316ffaf614b58a33ebdb195d1e793cc0a)
|
|
||||||
* link function [View](https://bitbucket.org/projects/test/repos/my-project/commits/b2ee8ec668d252a23389780f977bba3c58a79512)
|
|
||||||
* hop [View](https://bitbucket.org/projects/test/repos/my-project/commits/dc382017a2ab64fddbe6ca6f31b8419f24e8c0b3)
|
|
||||||
* fix url public [View](https://bitbucket.org/projects/test/repos/my-project/commits/59cb917ea36ac9cb4b21fb2d93fe01bc067c8935)
|
|
||||||
* fix test kind [View](https://bitbucket.org/projects/test/repos/my-project/commits/ed13c98b99048078a9ff3bd23ff32ab34f68c349)
|
|
||||||
* hash routes re enabled [View](https://bitbucket.org/projects/test/repos/my-project/commits/d7a35e91edb3d6f75ddb0946d8d288b20627c925)
|
|
||||||
* fix get participation url [View](https://bitbucket.org/projects/test/repos/my-project/commits/9a013f6d2cd29832d98fa81352f39db0a12fe60c)
|
|
||||||
* better mix on creation of poll [View](https://bitbucket.org/projects/test/repos/my-project/commits/d40aa6a3ae0152f53da4f29379800ab146b8fc89)
|
|
||||||
* no auto send form [View](https://bitbucket.org/projects/test/repos/my-project/commits/c3026639948ce0b4adc5ef22704c076e79407fbd)
|
|
||||||
* fix deps to config prop [View](https://bitbucket.org/projects/test/repos/my-project/commits/e7343810d5612f5ce30d41536c5c9a1d77093d31)
|
|
||||||
* env message demo dans le header [View](https://bitbucket.org/projects/test/repos/my-project/commits/d222d88872012f4cf22c34da9370bb6d2cba5d71)
|
|
||||||
* home display stored polls [View](https://bitbucket.org/projects/test/repos/my-project/commits/1bfe747e4cd256a42bd4c17f9b25fc1c3175131a)
|
|
||||||
* more responsive menu header [View](https://bitbucket.org/projects/test/repos/my-project/commits/bf1df96dcdbdf15905a8db2d61716466c838cfd8)
|
|
||||||
* enable loading state in api creation, success page update [View](https://bitbucket.org/projects/test/repos/my-project/commits/a969b30a03bd6e2ab93d352b5fceccd8420b6983)
|
|
||||||
* add to local polls after creation, update poll [View](https://bitbucket.org/projects/test/repos/my-project/commits/10177d793bf0af056f96e4873b4bbfd12d7c0bee)
|
|
||||||
* fix icon [View](https://bitbucket.org/projects/test/repos/my-project/commits/f6b522748a3e78735926764580a08145def159de)
|
|
||||||
* display of success links [View](https://bitbucket.org/projects/test/repos/my-project/commits/1755f205ad41e6b10fa8b656746d65e578456bbc)
|
|
||||||
* update custom_url with title [View](https://bitbucket.org/projects/test/repos/my-project/commits/f1e5903d0aa2d444b9dd5dc1ecdf3f30e2b61f22)
|
|
||||||
* smaller uniq id in custom_url [View](https://bitbucket.org/projects/test/repos/my-project/commits/5d39b7aa3e5f045f4270729f6c6daa2cd9ea79a9)
|
|
||||||
* erasable button on first field [View](https://bitbucket.org/projects/test/repos/my-project/commits/6fdb56786aa1cbd33badb80d00184aefcf6b64bd)
|
|
||||||
* same time span for every day by default, clean config [View](https://bitbucket.org/projects/test/repos/my-project/commits/c0ca623885d923c873c7d5796f1f687dfa148f8e)
|
|
||||||
* display time slices [View](https://bitbucket.org/projects/test/repos/my-project/commits/af4dfacec9107678069b2dd909473ac68549a728)
|
|
||||||
* empty and reset time slices [View](https://bitbucket.org/projects/test/repos/my-project/commits/1d8aeb2f54711709cd6209fde3615c43e2d78598)
|
|
||||||
* display all on creation [View](https://bitbucket.org/projects/test/repos/my-project/commits/d7eac8d56c68923b74516d688eeea3d421201567)
|
|
||||||
* display fields errors [View](https://bitbucket.org/projects/test/repos/my-project/commits/9cd847be8f099509a55518b092b1d0645c1967ee)
|
|
||||||
* less logs for validation [View](https://bitbucket.org/projects/test/repos/my-project/commits/186e5e36da6f4b424df0e127d7f52980551ef787)
|
|
||||||
* separate choice from form [View](https://bitbucket.org/projects/test/repos/my-project/commits/f6ce22480cbd1fe1ed9e1bb0a038cc6df8fa2030)
|
|
||||||
|
|
||||||
|
|
||||||
## v0.4.0 (2020-06-26)
|
|
||||||
|
|
||||||
* Ajout du lien vers le rendu [View](https://bitbucket.org/projects/test/repos/my-project/commits/983c64a1b4f542d743ee8f1029a4ca8662a3df95)
|
|
||||||
* Pose les textes de la première page de la maquette [View](https://bitbucket.org/projects/test/repos/my-project/commits/e9a85fe44a505a0444d72ae43e0a6a2e8003da3e)
|
|
||||||
* Changement de la structure HTML de base, inspiré de https://github.com/DavidBruant/better-defaults [View](https://bitbucket.org/projects/test/repos/my-project/commits/57b023425107ff786381339dab09e0344e03eb26)
|
|
||||||
* Habillage minimum de l'accueil [View](https://bitbucket.org/projects/test/repos/my-project/commits/2ca0982f6ee7181e701680d9ee63108bc34028d3)
|
|
||||||
* Ajoute les pages statiques de la navigation [View](https://bitbucket.org/projects/test/repos/my-project/commits/fac4efab3c48c70a0527641f0504031878141502)
|
|
||||||
* Ajoute un script docker pour lancer un serveur localement pour développer sur la maquette [View](https://bitbucket.org/projects/test/repos/my-project/commits/e30135786a4f6c3d39588afa00d17491a9406d1d)
|
|
||||||
* Documente le processus pour lancer le projet localement [View](https://bitbucket.org/projects/test/repos/my-project/commits/caf4cf7d2c7dd4969929c6290ab311df44bf1eaf)
|
|
||||||
* Ajout du parcour vers le sondage classique [View](https://bitbucket.org/projects/test/repos/my-project/commits/a248b803079b2ae58d86e8fa1b3e2cdb57fd8f74)
|
|
||||||
* ajout des champs de formulaire dans la page notifications [View](https://bitbucket.org/projects/test/repos/my-project/commits/1cc8e6beb442d3b365b73f0be2f525ff9f1bcb0d)
|
|
||||||
* Création du fichier js [View](https://bitbucket.org/projects/test/repos/my-project/commits/cb07e90e63ae8ec4ab1f91fe01630f7cc0cd8770)
|
|
||||||
* Ajoute le lien vers les natural language form [View](https://bitbucket.org/projects/test/repos/my-project/commits/b3b9797e8cd437efefee1ae6028dba433d62874e)
|
|
||||||
* Bifurcation sur le sondate en fonction du choix [View](https://bitbucket.org/projects/test/repos/my-project/commits/0f6abfa7b9ceea6fdd0d17366e77ea3929b9beb0)
|
|
||||||
* Usage du localStorage [View](https://bitbucket.org/projects/test/repos/my-project/commits/affb5500e734c94aa6526d1e8106f3b849871160)
|
|
||||||
* Ajoute la ponctuation [View](https://bitbucket.org/projects/test/repos/my-project/commits/23902aca1fb69cd40556896be744bfbf053dd8b8)
|
|
||||||
* Affiche un texte par défaut, et propose une popup pour saisi [View](https://bitbucket.org/projects/test/repos/my-project/commits/053d24c158c6e55888f42262d481d6bfb30e8013)
|
|
||||||
* Changement du nom, sans javascript, ou avec [View](https://bitbucket.org/projects/test/repos/my-project/commits/bf23bee2827d9197b646168c1a6606c13f890ed4)
|
|
||||||
* Généralise l'usage du champs text [View](https://bitbucket.org/projects/test/repos/my-project/commits/105b98388573ba5d6a1abe91a9e5b67db51c9169)
|
|
||||||
* Embelli les deux champs texte de la fin de sondage [View](https://bitbucket.org/projects/test/repos/my-project/commits/3229d14993c61eeb595971191c6b86c76707bb9d)
|
|
||||||
* Embelli le champ texte de l'index [View](https://bitbucket.org/projects/test/repos/my-project/commits/44b60adba0ee9c5b6ac515a926d7f4960023ba32)
|
|
||||||
* Base de reflexion pour l'ajout d'option [View](https://bitbucket.org/projects/test/repos/my-project/commits/91b94e806f1572a096d655932f352c26540c312c)
|
|
||||||
* Deploy on funky [View](https://bitbucket.org/projects/test/repos/my-project/commits/0ec23c03d3d16bc5f0979f678e696bdfed4f63a0)
|
|
||||||
* Update .gitlab-ci.yml [View](https://bitbucket.org/projects/test/repos/my-project/commits/9a045b4608b87d85f3ace567042991dab7b85828)
|
|
||||||
* Update .gitlab-ci.yml [View](https://bitbucket.org/projects/test/repos/my-project/commits/8ecb77c322df2b3d331c8a60b3c61bd7ac797d9a)
|
|
||||||
* Update .gitlab-ci.yml [View](https://bitbucket.org/projects/test/repos/my-project/commits/5edd7c6cd5edfae997ec2e4cece9fc524e51cebe)
|
|
||||||
* give up on bash & alpine [View](https://bitbucket.org/projects/test/repos/my-project/commits/ee2dfb7002c1a553e123f58ff1b3a5b1df7f63f4)
|
|
||||||
* Recherche de sondate en deux temps [View](https://bitbucket.org/projects/test/repos/my-project/commits/55ca50890f7d132bb626811aa9e50cce24d5f996)
|
|
||||||
* Déplace la date plus haut dans la page des notif. [View](https://bitbucket.org/projects/test/repos/my-project/commits/4d8e493c7049fbb9299c2b93fe2e914518c88f4c)
|
|
||||||
* Selectionne les options d'un sondage dates [View](https://bitbucket.org/projects/test/repos/my-project/commits/d151724e87b20500d19c022fa3a8f90066dfa533)
|
|
||||||
* Ajoute des informations sur la page de validation [View](https://bitbucket.org/projects/test/repos/my-project/commits/23b43fe5345f9a8fe2b6e77531def3eabb8a8125)
|
|
||||||
* Ajoute une option image + lien [View](https://bitbucket.org/projects/test/repos/my-project/commits/cdbe0a12e16156ae2ab7a4a854fdb57dd806d644)
|
|
||||||
* Ajout d'un champ texte en cas de sondage classique [View](https://bitbucket.org/projects/test/repos/my-project/commits/45319fcfd65a784f8e312a621cf3d1faaccfac6b)
|
|
||||||
* changement de l'URL de demo [View](https://bitbucket.org/projects/test/repos/my-project/commits/d48879c8f651ac4cd288d9914903fcd9d34ab671)
|
|
||||||
* fix(#16): amélioration de l'affichage de la page dates [View](https://bitbucket.org/projects/test/repos/my-project/commits/d4ad832004e399a289c9fa960a30caf38e6b4570)
|
|
||||||
* fix(#3): amélioration du design des boutons [View](https://bitbucket.org/projects/test/repos/my-project/commits/7505340c037682cf2894079aed1177499a162542)
|
|
||||||
* fix(#4): proposition d'amélioration d'affichage des champs textes [View](https://bitbucket.org/projects/test/repos/my-project/commits/19905b208e224eb77127e664cbc6b54aeee2a5d1)
|
|
||||||
* fix(#5): amélioration de l'apparence du textarea [View](https://bitbucket.org/projects/test/repos/my-project/commits/b2c79980c3ef4047bf0a073fe73f5220e3ebf737)
|
|
||||||
* fix(#15): amélioration du design de la page validation [View](https://bitbucket.org/projects/test/repos/my-project/commits/08b4e8bed0123a363f4f7d4edc6f0a11fbce2074)
|
|
||||||
* changement de la taille de typo [View](https://bitbucket.org/projects/test/repos/my-project/commits/d99f3af9212c328a3b20d626ca542117dcc69e4a)
|
|
||||||
* amélioration de l'affichage de l'email [View](https://bitbucket.org/projects/test/repos/my-project/commits/f566c30ee129d736c48f7a7af404bf3e8b244d38)
|
|
||||||
* ajout du style de bouton primary [View](https://bitbucket.org/projects/test/repos/my-project/commits/0ffbdca9ad4495124c386ab84fd15c55214e6809)
|
|
||||||
* amélioration de récapitulatif [View](https://bitbucket.org/projects/test/repos/my-project/commits/925ad5a5575af5414457b50cc6944e41d6da2591)
|
|
||||||
* ajout d'une classe bold [View](https://bitbucket.org/projects/test/repos/my-project/commits/77329039772e1342c03d46431b3034757f919010)
|
|
||||||
* amélioration affichage champs email [View](https://bitbucket.org/projects/test/repos/my-project/commits/bf4ccd61643aea3bdfdf7502ab693569706e1edb)
|
|
||||||
* proposition affichage des dates [View](https://bitbucket.org/projects/test/repos/my-project/commits/e3be6ad85a8dcea0dde9c0621b253e96d2a46cb3)
|
|
||||||
* amélioration de l'affichage des icones [View](https://bitbucket.org/projects/test/repos/my-project/commits/de5e3604b7524952940dbc494f328f34737d1d94)
|
|
||||||
* amélioration de l'affichage des icones [View](https://bitbucket.org/projects/test/repos/my-project/commits/531fd91aef8a8852085bd55202192fab76aa8eda)
|
|
||||||
* Ajoute des dates, et les enregistres dans le localStorage [View](https://bitbucket.org/projects/test/repos/my-project/commits/8f309740c18e25586434e9095f51ab064c9a9587)
|
|
||||||
* Affiche le titre du sondage dans la page de validation [View](https://bitbucket.org/projects/test/repos/my-project/commits/b1ab16bd11195294e080ecbd7a903191be55cc6a)
|
|
||||||
* Récupère l'ancien framadate [View](https://bitbucket.org/projects/test/repos/my-project/commits/50e56a0396610ac4f970b7ecc1702222c1981421)
|
|
||||||
* propose un champe vide par défaut [View](https://bitbucket.org/projects/test/repos/my-project/commits/4a6b039fa974e2df5b7062ee3079873f33c3949a)
|
|
||||||
* Met à jour le readme [View](https://bitbucket.org/projects/test/repos/my-project/commits/e5a4cde537a40691fbe2ac5dd2bacd7ea59dba76)
|
|
||||||
* Utilise un sondage spécial date par défaut [View](https://bitbucket.org/projects/test/repos/my-project/commits/90c014222f5322ca34cdfeb5c8720cd30e69e966)
|
|
||||||
* revois la page suivante par defaut [View](https://bitbucket.org/projects/test/repos/my-project/commits/2c9d5fa912e2ceb2cb32e1ad573d898d88305a8f)
|
|
||||||
* affiche uniquement les options nécessaire pour les date [View](https://bitbucket.org/projects/test/repos/my-project/commits/18d649dab9201c33ce156f5450d2d68dba7d1a47)
|
|
||||||
* reformule le texte de la page des dates [View](https://bitbucket.org/projects/test/repos/my-project/commits/eb79e6161117d5155482249536f053e6e24c9589)
|
|
||||||
* affiche les horaires dans un sondage spécial dates [View](https://bitbucket.org/projects/test/repos/my-project/commits/a5f3e96ad190b6c19c6f84f57884cf3892c13a8f)
|
|
||||||
* ajoute un bouton pour ajouter des horaires [View](https://bitbucket.org/projects/test/repos/my-project/commits/9c27b43d3bbd17ece53edde92b4ea85334f66d1c)
|
|
||||||
* affiche le récapitulatif en fonction des dates qui ont été saisies [View](https://bitbucket.org/projects/test/repos/my-project/commits/f6ded6f5fa2df0eb957f6512b8772eb09e2f938b)
|
|
||||||
* passage à du plus joli [View](https://bitbucket.org/projects/test/repos/my-project/commits/b5581c7127d96ee75856242b076b1b4632dea8d4)
|
|
||||||
* Dossier screenshots pour voir l'avancement ! [View](https://bitbucket.org/projects/test/repos/my-project/commits/91460d407700f2e6feac19e97c8d9468aef83d23)
|
|
||||||
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/d6c81848ea028fc10d746dbd31f2434cece8f137)
|
|
||||||
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/f5cd418a5767dc70413be45285c34f5623c5117f)
|
|
||||||
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/018987e6ae0dad4b878baa828ffa50ce7b82b531)
|
|
||||||
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/3f80ba64ee15bd497699fafdd26e6b7a3c9540db)
|
|
||||||
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/a46d24f267463b31a27a16967de7d1928c813f77)
|
|
||||||
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/376f093a00f958979e09913cc708a69cca27fed2)
|
|
||||||
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/18b984d478d974df5cd5db47d9306c3c95a02a2e)
|
|
||||||
* ajoute un lien vers l'exmple de natural language form [View](https://bitbucket.org/projects/test/repos/my-project/commits/e22559a6462240b69cfc74f522bb183542743f5f)
|
|
||||||
* Restart from scratch [View](https://bitbucket.org/projects/test/repos/my-project/commits/39242f22dbf321461d49bbf47f87274219210626)
|
|
||||||
* removed useless files [View](https://bitbucket.org/projects/test/repos/my-project/commits/61f69c926e879604936f73e3fe4726dbd8ee5dda)
|
|
||||||
* :tada: initialize Angular version of Framdate funky front end [View](https://bitbucket.org/projects/test/repos/my-project/commits/40b1a7bbf9c67f85d21c4212a7af51f9cb98d07b)
|
|
||||||
* hop [View](https://bitbucket.org/projects/test/repos/my-project/commits/512d569c54ce255f329a6883b1ba1c0bd86ffc18)
|
|
||||||
* :zap: make routing, link data with poll config. :art: style sheets [View](https://bitbucket.org/projects/test/repos/my-project/commits/d5f71504dc66c12a0ec9df91b5fb6a646aa098fc)
|
|
||||||
* real example of config [View](https://bitbucket.org/projects/test/repos/my-project/commits/c048c35b9d6aad8664ecd2fb208f047a1ab3eefc)
|
|
||||||
* :zap: example of navigation [View](https://bitbucket.org/projects/test/repos/my-project/commits/42f229f686bcf61ea4d8e3c877847937a12ae16e)
|
|
||||||
* :zap: example of navigation [View](https://bitbucket.org/projects/test/repos/my-project/commits/46cce96dab991af2de358e66daadbff9dda5079d)
|
|
||||||
* :zap: rename components [View](https://bitbucket.org/projects/test/repos/my-project/commits/e238b0aceb1fb2776242ef74cba46b5d27feebd7)
|
|
||||||
* :zap: make pages components, split config of poll from service [View](https://bitbucket.org/projects/test/repos/my-project/commits/56aa09df3bb71342aafd31ce95cba6e2733d1767)
|
|
||||||
* :zap: make pages components and nav [View](https://bitbucket.org/projects/test/repos/my-project/commits/49f4b4c13b555e0498d7bc2c8770e446d2ec2968)
|
|
||||||
* :zap: sync answers [View](https://bitbucket.org/projects/test/repos/my-project/commits/d413774d3b473c5355e2a52f1d0f73efa90b3ab8)
|
|
||||||
* :zap: ability to add a new answer and focus [View](https://bitbucket.org/projects/test/repos/my-project/commits/488b9f677ac9048062304a55f9ad6d6ff5630444)
|
|
||||||
* :zap: all steps and demo page [View](https://bitbucket.org/projects/test/repos/my-project/commits/54c7c6568d2cba66d0088b5bd0b8f3c401645445)
|
|
||||||
* focus via injected document [View](https://bitbucket.org/projects/test/repos/my-project/commits/d9b81d3d8ef5001fd7e199afcd05051263b21973)
|
|
||||||
* Correcting routing at the end of the form [View](https://bitbucket.org/projects/test/repos/my-project/commits/504d8faddf5ff608e63e2081bbbc2ab880860632)
|
|
||||||
* add fonts folder [View](https://bitbucket.org/projects/test/repos/my-project/commits/3fa61053a53518c57ba142ffee180f1cf9c9732d)
|
|
||||||
* fix(styles files): improve styles folders [View](https://bitbucket.org/projects/test/repos/my-project/commits/74b991362aa181ac64fa2882cd5ed3a1142d1536)
|
|
||||||
* Ajouter un nouveau dossier [View](https://bitbucket.org/projects/test/repos/my-project/commits/c77792b0575902f8b52b80483808a672fbc1cf8c)
|
|
||||||
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/c0491a433b2556c917fcd0771b20bf0026ef07a4)
|
|
||||||
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/9a9450dc0dcf23b8931fea51ae90455947a95e87)
|
|
||||||
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/0c00813056699d552f5990f825dd9612fc5443ab)
|
|
||||||
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/51540252844a8019cde41f4137effa10546127d8)
|
|
||||||
* Ajouter un nouveau dossier [View](https://bitbucket.org/projects/test/repos/my-project/commits/04d6a1b430214853e235fad96c5d8b9707114063)
|
|
||||||
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/5cada8fc32beb844e0cd78a5bf3a084d10f2e05c)
|
|
||||||
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/c1bf0631571d25cb669288caab7c1a74f14fa9a8)
|
|
||||||
* :zap: change privacy of properties [View](https://bitbucket.org/projects/test/repos/my-project/commits/d5e5550c54102ca3e1ddf3988139f036a09bcd9a)
|
|
||||||
* :zap: page creation or retrieve start [#28] [View](https://bitbucket.org/projects/test/repos/my-project/commits/6532538da3dfc07b9fdd328a984b431868580a67)
|
|
||||||
* styling in mobile column [View](https://bitbucket.org/projects/test/repos/my-project/commits/56a7271325dde04724aa1648e4cb3433b56020d9)
|
|
||||||
* :zap: lien entre multiple dates et config [View](https://bitbucket.org/projects/test/repos/my-project/commits/d941d6bed86ed922667c9fd806709efc96e6c236)
|
|
||||||
* :art: style of cursor hovering buttons [View](https://bitbucket.org/projects/test/repos/my-project/commits/16e8ab4ec5d3fb2cd522ca890066a653f230939c)
|
|
||||||
* :zap: add my name input in first form [View](https://bitbucket.org/projects/test/repos/my-project/commits/8eecb506c3c448273a2d52fc7f28733b09e93717)
|
|
||||||
* Remove my editor config files [View](https://bitbucket.org/projects/test/repos/my-project/commits/4bb851640bba5054c282e97144d8916bc5aa1957)
|
|
||||||
* Add calendar component [View](https://bitbucket.org/projects/test/repos/my-project/commits/9dace55091d8f8d5cfe72764a2ac54d0fa1de2a8)
|
|
||||||
* added web fonts [View](https://bitbucket.org/projects/test/repos/my-project/commits/7fcd13f05a1d07be698cb40f6855c3181a2f169f)
|
|
||||||
* Modification de la page de création [View](https://bitbucket.org/projects/test/repos/my-project/commits/189f5915c17604a6ced866a98ee735fdf73dffe7)
|
|
||||||
* added bootstrap reboot as a CSS reset [View](https://bitbucket.org/projects/test/repos/my-project/commits/ce53ccf55f9370bc1da8202189497d9178a44c45)
|
|
||||||
* improved heading code [View](https://bitbucket.org/projects/test/repos/my-project/commits/918999178495e5541498a02a4b495bf3b324863f)
|
|
||||||
* Modification des liens [View](https://bitbucket.org/projects/test/repos/my-project/commits/13144d5b8c28986a450170f2421a34482b66da59)
|
|
||||||
* ordered links file + added sass [View](https://bitbucket.org/projects/test/repos/my-project/commits/5ae1aeabeb561bff94758b50b61e9d26c83480ad)
|
|
||||||
* improve markup, hide useless decortion for a and h1 in header [View](https://bitbucket.org/projects/test/repos/my-project/commits/c47e00a82481c8c0415b137b406623d0d63f9bd2)
|
|
||||||
* improve global display [View](https://bitbucket.org/projects/test/repos/my-project/commits/74285393d885870340ecb60a6d8b79f360abfaea)
|
|
||||||
* Adding basic date filling [View](https://bitbucket.org/projects/test/repos/my-project/commits/9031b60178bf2c4a25bc596161429fa6a24858c2)
|
|
||||||
* :art: organize fonts in folders [View](https://bitbucket.org/projects/test/repos/my-project/commits/2d03578a1d6fef9431a79950b1e24f13c71ce44c)
|
|
||||||
* :art: remove blue in links of the bootstrap lib, add strike line on create button [View](https://bitbucket.org/projects/test/repos/my-project/commits/07989e454fb4df951177831a0e3d793cbba54198)
|
|
||||||
* :art: striked button and icon style [View](https://bitbucket.org/projects/test/repos/my-project/commits/29bfe45acac4905a4f9df4f343993beebe9c6fee)
|
|
||||||
* :bug: remove page folder, refacto in pages folder for creation page [View](https://bitbucket.org/projects/test/repos/my-project/commits/8291f2d8de90b54f4bd6dac6d4384589f8eabdf8)
|
|
||||||
* fix(headings): moved h1 with border to component [View](https://bitbucket.org/projects/test/repos/my-project/commits/1753515797ddca6d20ee3464d73e0421332abdec)
|
|
||||||
* style(default): added font color [View](https://bitbucket.org/projects/test/repos/my-project/commits/e91c66eef42b7b614458e65cef9dd80660f0a836)
|
|
||||||
* worked on links [View](https://bitbucket.org/projects/test/repos/my-project/commits/f0da02371ddf0a46c3166ec9228a3f7a8e7603b6)
|
|
||||||
* style(hover): added hover color [View](https://bitbucket.org/projects/test/repos/my-project/commits/c3b9ddfb7221c5cba0ab9997fc715096d29df72d)
|
|
||||||
* Modify input's style [View](https://bitbucket.org/projects/test/repos/my-project/commits/7e4feb9350d39880d42505d6a80159d05a49f5f2)
|
|
||||||
* Fix password css object [View](https://bitbucket.org/projects/test/repos/my-project/commits/ecbf7878569c519c41b96001ca2198212f13a5c3)
|
|
||||||
* modifications sur les liens & les buttons [View](https://bitbucket.org/projects/test/repos/my-project/commits/435a1d58c90acdd6b373919387558de65bd922c3)
|
|
||||||
* Personalize p html balise [View](https://bitbucket.org/projects/test/repos/my-project/commits/b0ca964c7558c6589aa3cd9d4c4b543a07b9e48c)
|
|
||||||
* added list of elements [View](https://bitbucket.org/projects/test/repos/my-project/commits/8ac8b696aad5bf0358fdd06cbcdc8a6fea718979)
|
|
||||||
* worked a bit on display [View](https://bitbucket.org/projects/test/repos/my-project/commits/93b9908a407999324b50d85619cb185266fbebb0)
|
|
||||||
* worked on home [View](https://bitbucket.org/projects/test/repos/my-project/commits/807b6bc66020c279c4e7296d718579d6837bd671)
|
|
||||||
* added delete buttons [View](https://bitbucket.org/projects/test/repos/my-project/commits/c64f6b9ebe17554c500224784417471fb0f93ce5)
|
|
||||||
* added useful classes and comments [View](https://bitbucket.org/projects/test/repos/my-project/commits/58835864d32061c0d1e4c2da8cd00a98561f5b9f)
|
|
||||||
* corrected links background [View](https://bitbucket.org/projects/test/repos/my-project/commits/fcc770f82de0b47a81c8c74cdbd029e82f58005c)
|
|
||||||
* Add img [View](https://bitbucket.org/projects/test/repos/my-project/commits/00e3f00c9adecf6f93d8c3259b7cf71db3fe347a)
|
|
||||||
* select modify [View](https://bitbucket.org/projects/test/repos/my-project/commits/ccf37a85362d9f3a226d0a8e3721702a616ec2c0)
|
|
||||||
* minimal commit [View](https://bitbucket.org/projects/test/repos/my-project/commits/5f796b817a60eee9a7fc609cf00e73959e63209e)
|
|
||||||
* Add dropdown arrow [View](https://bitbucket.org/projects/test/repos/my-project/commits/2e1078c4e437372a8e5705709260cbb76e6264ac)
|
|
||||||
* :zap: format html, :alien: up translate file [View](https://bitbucket.org/projects/test/repos/my-project/commits/320c9504677d521a4011ec4f88c680b1b7177667)
|
|
||||||
* :zap: add pages [View](https://bitbucket.org/projects/test/repos/my-project/commits/018b1ce83eb84a74bafc35bc48fc3404338c384c)
|
|
||||||
* Change colors [View](https://bitbucket.org/projects/test/repos/my-project/commits/9996d954dd5adafd3951e2357ae35fad6f99784e)
|
|
||||||
* Add input borders [View](https://bitbucket.org/projects/test/repos/my-project/commits/1d6f1dc95580fb8432af93290b731c1e107ecea7)
|
|
||||||
* delete left border on textarea [View](https://bitbucket.org/projects/test/repos/my-project/commits/b763252d765360da96f29c827258b76e100be567)
|
|
||||||
* Change png to svg select image [View](https://bitbucket.org/projects/test/repos/my-project/commits/b091a190cf24785e78bce31086ce7f09aa527c64)
|
|
||||||
* change select padding [View](https://bitbucket.org/projects/test/repos/my-project/commits/bddc200cbdc44e0266eaa018c0d9f9a0dff5e8e0)
|
|
||||||
* change select padding [View](https://bitbucket.org/projects/test/repos/my-project/commits/e00dff4acb1a09f759779656af0a80e5d5e72718)
|
|
||||||
* remove placeholder [View](https://bitbucket.org/projects/test/repos/my-project/commits/ba4fad8a31660e5c0a761e7507d9ff7a6f858a0b)
|
|
||||||
* change home order text [View](https://bitbucket.org/projects/test/repos/my-project/commits/48e77024d54edfa950ed1cc89eab4110c830b8ff)
|
|
||||||
* added flex-line [View](https://bitbucket.org/projects/test/repos/my-project/commits/cb6979926d282129cee11c56b352e46a97c58f14)
|
|
||||||
* added wrap to flex-line [View](https://bitbucket.org/projects/test/repos/my-project/commits/ef9a0fe7704a18da5c5b4e75ee0839b53e6e70c3)
|
|
||||||
* changed content width [View](https://bitbucket.org/projects/test/repos/my-project/commits/53a550bdc1ce33f691bffa0cd40a579142dcea05)
|
|
||||||
* Change button style on home [View](https://bitbucket.org/projects/test/repos/my-project/commits/3be3bb44f1886e72a828662d267c090a477a0627)
|
|
||||||
* style answers page [View](https://bitbucket.org/projects/test/repos/my-project/commits/e0898ba3945b8617609bc1a1a24646e27d1713ee)
|
|
||||||
* add button [View](https://bitbucket.org/projects/test/repos/my-project/commits/132a7fabd3c089b84dd237d37c9902996d1f2427)
|
|
||||||
* Testing [View](https://bitbucket.org/projects/test/repos/my-project/commits/df859e02818f2ffe2b2e9340eae725d540fa0e23)
|
|
||||||
* :ambulance: change form-container to home component [View](https://bitbucket.org/projects/test/repos/my-project/commits/d2478c37a48bac56af35d0b91311a99bdd946913)
|
|
||||||
* :zap: all page components do extend basecomponent and its common config service [View](https://bitbucket.org/projects/test/repos/my-project/commits/8f8a258ecf65d8af5307acf5ed8d2b543c835aae)
|
|
||||||
* change link [View](https://bitbucket.org/projects/test/repos/my-project/commits/326f2731ff9caf811cab32062998cc62a6c116b6)
|
|
||||||
* merge with ng-init [View](https://bitbucket.org/projects/test/repos/my-project/commits/193468e66995309adf480db0c6cbbf4113c96bc2)
|
|
||||||
* Remove placeholder [View](https://bitbucket.org/projects/test/repos/my-project/commits/aab6ea801b81ee0aa8368483a2f15070ea574cf9)
|
|
||||||
* :alien: demo for i18n [View](https://bitbucket.org/projects/test/repos/my-project/commits/cc7b4661eefc6674e4e5b849b3b6cda2eb67bbe7)
|
|
||||||
* modify create or retrive page [View](https://bitbucket.org/projects/test/repos/my-project/commits/0c0dd7063dd7a47e1440366dd7b976e3e75e169d)
|
|
||||||
* stylise button [View](https://bitbucket.org/projects/test/repos/my-project/commits/128e4b628185bcb00fe0de15abe2c9277b25f52f)
|
|
||||||
* :alien: add ngx translate config [View](https://bitbucket.org/projects/test/repos/my-project/commits/d1ced70b1b81e2fa7cf8124bc9d6ee9cd76eeae5)
|
|
||||||
* :alien: json strings to translate things in en/fr [View](https://bitbucket.org/projects/test/repos/my-project/commits/90323c28c7e96d1d3c70e54b8818d34680fc5783)
|
|
||||||
* :alien: add missing translation support [View](https://bitbucket.org/projects/test/repos/my-project/commits/91101f2326413f9d63476c026c0207f93cb3e490)
|
|
||||||
* :alien: translate 2 first pages [View](https://bitbucket.org/projects/test/repos/my-project/commits/0f2a72f8720220fd17db37006b5361b425975006)
|
|
||||||
* Add html code for voting [View](https://bitbucket.org/projects/test/repos/my-project/commits/6cc09aebb5f175d09862228799735aeed1ac1c85)
|
|
||||||
* Add css on vote component : No works [View](https://bitbucket.org/projects/test/repos/my-project/commits/e059d45f73b5ee16925260139bdf066a3ac1b4d0)
|
|
||||||
* Minimal commit [View](https://bitbucket.org/projects/test/repos/my-project/commits/9c4fabb176e78f28b72439d6e4f5ee138f404069)
|
|
||||||
* :zap: choice component JS logic and type constraints. demo for dev environment [View](https://bitbucket.org/projects/test/repos/my-project/commits/f48d05b5188df06e3e4494510cb6f780d6b8c982)
|
|
||||||
* :bug: fix undefined choice [View](https://bitbucket.org/projects/test/repos/my-project/commits/1074d219dd9dc5c267976806270dd6a2c51ed4ea)
|
|
||||||
* :zap: date en français dans le choix de vote [View](https://bitbucket.org/projects/test/repos/my-project/commits/2d060f99055acb3d5251b1afde70abc786768f51)
|
|
||||||
* Add round to buttons on vote-choice [View](https://bitbucket.org/projects/test/repos/my-project/commits/1b9c669ae3d16d8fcaaa6977d558e420e7bdfc03)
|
|
||||||
* Corrige center alignement [View](https://bitbucket.org/projects/test/repos/my-project/commits/36192647c01c47f1d6782da6c69297449c1f2d8b)
|
|
||||||
* stylize the date [View](https://bitbucket.org/projects/test/repos/my-project/commits/8215dfab78f101bd15fcfaa0752afedc0b56842d)
|
|
||||||
* Add `npm i` command to README.md [View](https://bitbucket.org/projects/test/repos/my-project/commits/fd27382a9aeaff8a6735a85712d4142f0b795976)
|
|
||||||
* Modify vote component [View](https://bitbucket.org/projects/test/repos/my-project/commits/280783c56b699f72e736f31125cf4ab22c9d8c70)
|
|
||||||
* Translation fr->en [View](https://bitbucket.org/projects/test/repos/my-project/commits/5e2193e8aa0aa5cea1fa1d20127142d84518ede6)
|
|
||||||
* Correction of a typing mistake [View](https://bitbucket.org/projects/test/repos/my-project/commits/a63f76b45014c9dbb199406b30389b447bb09d60)
|
|
||||||
* Put the words in a more natural order [View](https://bitbucket.org/projects/test/repos/my-project/commits/fd6cce277775a271aaab702e836dd93104d7e1be)
|
|
||||||
* Add i18n in navigation [View](https://bitbucket.org/projects/test/repos/my-project/commits/0cb0813eb774c7aff4f96d71822dfa2d9e0cd089)
|
|
||||||
* Stick "Frama" and "date" together [View](https://bitbucket.org/projects/test/repos/my-project/commits/efe0b892186b203dca49939573966eee10d1d772)
|
|
||||||
* Minimal commit [View](https://bitbucket.org/projects/test/repos/my-project/commits/c671a8bdea289d1623502d5672069897556af3ab)
|
|
||||||
* Replaced text by i18n json keys and add i18n attribute [View](https://bitbucket.org/projects/test/repos/my-project/commits/c5021a2aa1ff176457852f5419aa76e58dff2fa6)
|
|
||||||
* Align elements [View](https://bitbucket.org/projects/test/repos/my-project/commits/69802a99ffa5e5a23e94f6b1f1d6931c9bfc62aa)
|
|
||||||
* [front] global : update button styles [View](https://bitbucket.org/projects/test/repos/my-project/commits/802f54b930125db6c8994f53c1389d3892e0b91a)
|
|
||||||
* [front] global : increase main wrap size [View](https://bitbucket.org/projects/test/repos/my-project/commits/a176405dd492ca9941d5b02011436db0e3f2076e)
|
|
||||||
* [front] component : vote choice [View](https://bitbucket.org/projects/test/repos/my-project/commits/3e29117ea62ee3025ed1e3ae8b328aa51197dc3e)
|
|
||||||
* ajout composant graphique sondage [View](https://bitbucket.org/projects/test/repos/my-project/commits/a006e4d42a0bd1bb85361952f47c27aa5ca3307d)
|
|
||||||
* #36 : ajout librairie chartjs [View](https://bitbucket.org/projects/test/repos/my-project/commits/46a02846bfd0a49066cb03fcce04c1f239df5a8a)
|
|
||||||
* issue 36 : select daltonien [View](https://bitbucket.org/projects/test/repos/my-project/commits/5f2a2b4461f6a4b8a33b6d64af4180f7e1ff85de)
|
|
||||||
* Issue-30: Markdown support [View](https://bitbucket.org/projects/test/repos/my-project/commits/be96384a8e5f42211303b5f9215512787e9bb7cd)
|
|
||||||
* [front] component : vote choice [View](https://bitbucket.org/projects/test/repos/my-project/commits/6ee9f742faa27b039785290660563bce998fe52b)
|
|
||||||
* Issue-30 : markdown - bouton retour [View](https://bitbucket.org/projects/test/repos/my-project/commits/ca3b76d0c82dffa5c4f8f4228ef0579da7642500)
|
|
||||||
* Format html templates with tabs [View](https://bitbucket.org/projects/test/repos/my-project/commits/bfa44534aa0ccc821a5d5f73d40a967dbc45ebab)
|
|
||||||
* [fix] vote choice : minor css fixes [View](https://bitbucket.org/projects/test/repos/my-project/commits/28b3334d3e258f3cef1a36c3247aa6f89b37e8a4)
|
|
||||||
* [front] vote choice : add image and text cases [View](https://bitbucket.org/projects/test/repos/my-project/commits/6f8b180d1fdb50f10804025e6232fbe512cf680f)
|
|
||||||
* suppression du code mort [View](https://bitbucket.org/projects/test/repos/my-project/commits/f9a8c1d8c3f92099b2d29723a5337402a0bc6d05)
|
|
||||||
* Resolution du conflit [View](https://bitbucket.org/projects/test/repos/my-project/commits/985be95b0d16529196891d4c855c46bfad53c575)
|
|
||||||
* Conflit resolved [View](https://bitbucket.org/projects/test/repos/my-project/commits/8b728d172f1558f603bc8f11df0d97f737020772)
|
|
||||||
* Traduction placeholder [View](https://bitbucket.org/projects/test/repos/my-project/commits/61d31dfd5a252f7e89ad464c51d675d78b0812d5)
|
|
||||||
* Err correction special dates [View](https://bitbucket.org/projects/test/repos/my-project/commits/22a560d82d40337bd66ab30062ca235a7e3e99ca)
|
|
||||||
* issue-36 : restitution des votes d'un sondage sous forme de graphiques. début [View](https://bitbucket.org/projects/test/repos/my-project/commits/00597410277aa3c387a8b33d9e31033adc853fc9)
|
|
||||||
* :zap: choices to add,clear and delete [View](https://bitbucket.org/projects/test/repos/my-project/commits/b7afca96db4b811fa02e1f4725dc6f5661f1db0e)
|
|
||||||
* Issue-36 : Graph sondage [View](https://bitbucket.org/projects/test/repos/my-project/commits/723a0f9527776f1de653464b979980c662a6e909)
|
|
||||||
* Fix bug [View](https://bitbucket.org/projects/test/repos/my-project/commits/497cf9e12ca5ef283391b9586d83f1ca2daf13dd)
|
|
||||||
* fix bug [View](https://bitbucket.org/projects/test/repos/my-project/commits/1055a0cdbe3f800acccc6a8f06c3669f47ef6de7)
|
|
||||||
* Une partie de html [View](https://bitbucket.org/projects/test/repos/my-project/commits/942649656df42aa23f0117ed8757bb3e176129b8)
|
|
||||||
* :bug: fix focus on date, extend the empty all button to timespans [View](https://bitbucket.org/projects/test/repos/my-project/commits/cf2a12507e053d9235d6a03f1e0569c90df82c27)
|
|
||||||
* Ajout formatage données [View](https://bitbucket.org/projects/test/repos/my-project/commits/c36a3b064cc1330628037c57ffff9cf5c41c183c)
|
|
||||||
* :bug: fix deletions in date buttons , input of type date [View](https://bitbucket.org/projects/test/repos/my-project/commits/933c32798cc26461ca5b62ec3eb89c18f29e4953)
|
|
||||||
* :zap: start call backend service to retrieve my polls by email [View](https://bitbucket.org/projects/test/repos/my-project/commits/026c7cfda2476e7a77cecfaff28c151e835b7a10)
|
|
||||||
* :alien: translate button to add [View](https://bitbucket.org/projects/test/repos/my-project/commits/6a40e041d0af462d9e776632168d033ab2d7eae2)
|
|
||||||
* :alien: translate button to add in template [View](https://bitbucket.org/projects/test/repos/my-project/commits/20876f9a8d927fadc083b193d671355f4bfd3423)
|
|
||||||
* :zap: add unique interval days [View](https://bitbucket.org/projects/test/repos/my-project/commits/572f0837cc93feba5ee76a6b112a14d333ba6121)
|
|
||||||
* :alien: translate buttons [View](https://bitbucket.org/projects/test/repos/my-project/commits/7b590840b2a8504db34114434fd2345141711f4d)
|
|
||||||
* :zap: fix function call in template [View](https://bitbucket.org/projects/test/repos/my-project/commits/e81389eae13b8709085710ce60bae6d3307ba7ae)
|
|
||||||
* :zap: link graphic in nav [View](https://bitbucket.org/projects/test/repos/my-project/commits/c0f800ff91822255a4d84e18106d238506dfaab4)
|
|
||||||
* Page crée et bien complétée (plus qu'a faire les alignements) [View](https://bitbucket.org/projects/test/repos/my-project/commits/84b87486ed57d14549f6a5bc5c00df508cad7ed1)
|
|
||||||
* Presque fini [View](https://bitbucket.org/projects/test/repos/my-project/commits/8f8a0d07d27a23f0871f1718ca5e0654bb1f38db)
|
|
||||||
* Dernier commit avant merge [View](https://bitbucket.org/projects/test/repos/my-project/commits/39d4213bded6915081dd42cd506c52ff20ac2659)
|
|
||||||
* Resolve a part of merge conflicts [View](https://bitbucket.org/projects/test/repos/my-project/commits/275a065d8ebde70d9556ad1c2e915daf6228578b)
|
|
||||||
* :zap: svg in assets [View](https://bitbucket.org/projects/test/repos/my-project/commits/d993111d34afa7f33a56c95823e2ca159a8350f1)
|
|
||||||
* :alien: translation keys for visibility page [View](https://bitbucket.org/projects/test/repos/my-project/commits/7a9c7b6dc3d5f63282fe48e8dd9b1979cca38463)
|
|
||||||
* start visibility [View](https://bitbucket.org/projects/test/repos/my-project/commits/8ff8cbc40838ac3ffb41643804ca3aa976adc4c8)
|
|
||||||
* :zap: selector custom component for ui, half the visibility page [View](https://bitbucket.org/projects/test/repos/my-project/commits/d107978f2c66dfa80abb47ddc2cce107f8a5eec1)
|
|
||||||
* end visibilty fields link with poll config [View](https://bitbucket.org/projects/test/repos/my-project/commits/f4108ee61b31fe555775a05dbebba49ed78d722f)
|
|
||||||
* :zap: link default values [View](https://bitbucket.org/projects/test/repos/my-project/commits/c1935dbb87b53b4750c798dee79506cc215ac1dd)
|
|
||||||
* :zap: linked things [View](https://bitbucket.org/projects/test/repos/my-project/commits/7da480f310359c4d29a030654582cbadf68d26ce)
|
|
||||||
* :art: style remove strange section sizes, h1 size greater [View](https://bitbucket.org/projects/test/repos/my-project/commits/93f3aa76bd7aced66d936967c7f7fb90b2d800cd)
|
|
||||||
* add default content to poll config [View](https://bitbucket.org/projects/test/repos/my-project/commits/e179be812eda262fb103c67b721f35f7c95010fa)
|
|
||||||
* :zap: enhance keyboard navigation with answers [View](https://bitbucket.org/projects/test/repos/my-project/commits/9c02b1ae2b16abd5ef43f41721a2657369fedc28)
|
|
||||||
* :alien: add english key to translate [View](https://bitbucket.org/projects/test/repos/my-project/commits/48586b847507e93f0c93c084364523d2bef94e73)
|
|
||||||
* changer la langue entre fr et en quand on clique sur l'icone de traduction [View](https://bitbucket.org/projects/test/repos/my-project/commits/b78ea6273eadfa9ea862952fdd4ed32b72a9191e)
|
|
||||||
* Translation work [View](https://bitbucket.org/projects/test/repos/my-project/commits/abe07bc9784cce5aa93ffa2831ca18abc8e8c046)
|
|
||||||
* HTML Part [View](https://bitbucket.org/projects/test/repos/my-project/commits/c581d7262500778c7fab1d63323f74437a6e0665)
|
|
||||||
* Complete HTML [View](https://bitbucket.org/projects/test/repos/my-project/commits/a53322b441be5cdf882777e92909205e91008445)
|
|
||||||
* CSS Part [View](https://bitbucket.org/projects/test/repos/my-project/commits/3e372d6f53b7dc8e06d26bc8295663505f958def)
|
|
||||||
* Other css part [View](https://bitbucket.org/projects/test/repos/my-project/commits/07f5d60b95e87c5393061a2c443a8d4f3b66e285)
|
|
||||||
* :zap: start backend calls [View](https://bitbucket.org/projects/test/repos/my-project/commits/f223b760fff0cfc769396891f5528fc97b55099d)
|
|
||||||
* organise calls, add headers [View](https://bitbucket.org/projects/test/repos/my-project/commits/cb6636f1557cdf4e33f0a2163245f6ab5ae63755)
|
|
||||||
* push [View](https://bitbucket.org/projects/test/repos/my-project/commits/d3a7a37d4db51e2aaddae9180c7c4d6dc8413444)
|
|
||||||
* Spelling corrections [View](https://bitbucket.org/projects/test/repos/my-project/commits/6f08fc3dd05203babedf7d15c8c9fe09b9b0eca7)
|
|
||||||
* 🎉🎉 Page terminée 🎉🎉 [View](https://bitbucket.org/projects/test/repos/my-project/commits/73b9d496e68db9c0bdb49e1f53fc3a25129c97eb)
|
|
||||||
* Plus qu'a aligner les labels aux inputs [View](https://bitbucket.org/projects/test/repos/my-project/commits/be66cc0a907fc1e947d5c02e85ff1e6388eec0a1)
|
|
||||||
* Terminé [View](https://bitbucket.org/projects/test/repos/my-project/commits/2b079f63a043e3bd2dda486ca8e1005b72535c6a)
|
|
||||||
* Add route and HTML [View](https://bitbucket.org/projects/test/repos/my-project/commits/adcdaf911f99567bb348accd1197a6f013939bca)
|
|
||||||
* Add css [View](https://bitbucket.org/projects/test/repos/my-project/commits/c727aa935e509e061b0dba669e41c82bc6791e63)
|
|
||||||
* :art: style on current page from the route data, and texts in the confirm page, step end [View](https://bitbucket.org/projects/test/repos/my-project/commits/809aa0f02fc0add44b497a4ba8ee55c6ee17fc6c)
|
|
||||||
* :zap: link to public [View](https://bitbucket.org/projects/test/repos/my-project/commits/112119194a1255b6c96e82476dc7e08123b1b835)
|
|
||||||
* :zap: remove debug step in nav [View](https://bitbucket.org/projects/test/repos/my-project/commits/daf7006bb8317b4ec6ed96e0a28ef93d8de9ba39)
|
|
||||||
* :zap: fix some deps [View](https://bitbucket.org/projects/test/repos/my-project/commits/cf4e9f45634b0eb8fa52bf77c52373876ce5eaef)
|
|
||||||
* :zap: update dependencies with yarn, add primefaces to make toasts [View](https://bitbucket.org/projects/test/repos/my-project/commits/ded5e71e73a037096d0497b615faf82d733a775b)
|
|
||||||
* :art: add font awesome [View](https://bitbucket.org/projects/test/repos/my-project/commits/4296c5c9f95c2dae7754c4a6ba1751444b9ff039)
|
|
||||||
* :zap: get poll data in vote choices [View](https://bitbucket.org/projects/test/repos/my-project/commits/5657f57fc75b05c055c63798032c8eae0514a0e0)
|
|
||||||
* :zap: reorganize poll display page [View](https://bitbucket.org/projects/test/repos/my-project/commits/79ef34e5af971db537f42cb0c4eacd6bd79f00e0)
|
|
||||||
* merge with dev [View](https://bitbucket.org/projects/test/repos/my-project/commits/c9b4ffe328ec283b2630406c788dab70b45c8505)
|
|
||||||
* :zap: enhance display poll page [View](https://bitbucket.org/projects/test/repos/my-project/commits/52587428ddcbe179c71892f9288a44202306fb0a)
|
|
||||||
* :zap: reorganize poll display page and urls in config [View](https://bitbucket.org/projects/test/repos/my-project/commits/051e4d8ee469370a7ae7b68cce6a1325394b9c12)
|
|
||||||
* :zap: change translation button way to be in sync with the model [View](https://bitbucket.org/projects/test/repos/my-project/commits/37904596fbc2f68e2fa6d80d44422b4230af71d8)
|
|
||||||
* :art: visual help on clickable elements [View](https://bitbucket.org/projects/test/repos/my-project/commits/5eba5d684b7c8b6194ac1676b4559d189792ec44)
|
|
||||||
* :zap: check for uniqueness of the slug, slug the title by default [View](https://bitbucket.org/projects/test/repos/my-project/commits/2720b6596241874df330373645952f6a53ebeb5c)
|
|
||||||
* :zap: add email to creation [View](https://bitbucket.org/projects/test/repos/my-project/commits/7c64f1f8f08b75fb34ddd7459d8e9580202e5298)
|
|
||||||
* :zap: copy to clipboard ok [View](https://bitbucket.org/projects/test/repos/my-project/commits/4098f7ec5c533d3b35e629278006d6134ff8ee38)
|
|
||||||
* :zap: toast messages when copied to clipboard and network errors [View](https://bitbucket.org/projects/test/repos/my-project/commits/b44f2719b44e4aba7476dc7952b4cc739b9d1d39)
|
|
||||||
* :book: clean console logs [View](https://bitbucket.org/projects/test/repos/my-project/commits/7df60e5a514783a5d393e9a3446a934e12e580ea)
|
|
||||||
* :bug: fix show and hide of password input [View](https://bitbucket.org/projects/test/repos/my-project/commits/fd4bbb5c712fb79204badae316d92fd17be7c9e5)
|
|
||||||
* :zap: calls in administration page to delete things [View](https://bitbucket.org/projects/test/repos/my-project/commits/bae3f19af223022c933fd622d3c8adf2bf6167db)
|
|
||||||
* :bug: remove duplicate text in end of admin page [View](https://bitbucket.org/projects/test/repos/my-project/commits/113609e945f5e09ae3c04119225eb6bd7fa670c8)
|
|
||||||
* :zap: toast todo things [View](https://bitbucket.org/projects/test/repos/my-project/commits/7b790e3cdc58ee296e16645abef0fc9ee0cad629)
|
|
||||||
* :zap: computations for the result graph [View](https://bitbucket.org/projects/test/repos/my-project/commits/1b65d58a6f52acfb0265c33de7c9779177b73ff1)
|
|
||||||
* toggle simple answer [View](https://bitbucket.org/projects/test/repos/my-project/commits/a3e243ed19bddc12e194a166ab38c3101835fcc2)
|
|
||||||
* :bug: fix build [View](https://bitbucket.org/projects/test/repos/my-project/commits/10497c9cb09873f3ede8b75729d2f444d12e5338)
|
|
||||||
* :zap: add update demo script, remove duplicate toast, try hash route [View](https://bitbucket.org/projects/test/repos/my-project/commits/6a3d2c3195303b5094f43102df78f7e4990e19c8)
|
|
||||||
* :zap: modal to display url [View](https://bitbucket.org/projects/test/repos/my-project/commits/255205696bcf8778088404348bdd0b748649f0b3)
|
|
||||||
* :zap: list mypolls on first page [View](https://bitbucket.org/projects/test/repos/my-project/commits/9ebd22536b1ed314e264757867d84bef1ee87d9f)
|
|
||||||
* buttons to nav [View](https://bitbucket.org/projects/test/repos/my-project/commits/3808f194258dd5cd93b03258ec2f2d90ee6b615b)
|
|
||||||
* :zap: erasable inputs on first config screen ok [View](https://bitbucket.org/projects/test/repos/my-project/commits/3ada66ac5f36c38502556f18982954d2526cce0e)
|
|
||||||
* launch creation from resume page [View](https://bitbucket.org/projects/test/repos/my-project/commits/f8568eb9102668521556b40eacc89ee8b639db09)
|
|
||||||
* :zap: lang input placement [View](https://bitbucket.org/projects/test/repos/my-project/commits/ff5c11e79c42926296516f27cc95aa660e34a50d)
|
|
||||||
* :zap: really fetch a poll by id [View](https://bitbucket.org/projects/test/repos/my-project/commits/123a0b1c809999306f131e6e0f9523d82944d38a)
|
|
||||||
* :zap: update vote list after vote creation [View](https://bitbucket.org/projects/test/repos/my-project/commits/06cf447529583f05789e17f9d9b9d196f0a56409)
|
|
||||||
* :zap: hop [View](https://bitbucket.org/projects/test/repos/my-project/commits/96709c9bc71980541497eb7f4387512948f3de08)
|
|
||||||
* :book: add mocks from updated backend [View](https://bitbucket.org/projects/test/repos/my-project/commits/a68cbdcc0a017e30490239ff9593c69b7b2f798f)
|
|
||||||
* :bug: fix recursion in input erase button [View](https://bitbucket.org/projects/test/repos/my-project/commits/195259bb722a4dd5260a05bbe5dd77cbc6d0577e)
|
|
||||||
* :zap: menu to nav on poll display - #64 [View](https://bitbucket.org/projects/test/repos/my-project/commits/d2c726012bbc4cf413b18f454fc9e859fdb50b49)
|
|
||||||
* :zap: build for production, :bug: fix publicy of vars in templates [View](https://bitbucket.org/projects/test/repos/my-project/commits/ea43430e1b7acf3f6250215fc9966cca5e6422a5)
|
|
||||||
* :zap: build for demo updated [View](https://bitbucket.org/projects/test/repos/my-project/commits/f96833d96e7c53dd855113ef9e3a7dd7b62c5021)
|
|
||||||
* :zap: use hash for internal routing in the frontend [View](https://bitbucket.org/projects/test/repos/my-project/commits/b06a44fb98ec9d0f3903b99f917aff7817742983)
|
|
||||||
* poll routing hints in the app, demo precision in header [View](https://bitbucket.org/projects/test/repos/my-project/commits/8322a9a83a799e67b90dd47e0aa4ff1c56b81e0b)
|
|
||||||
* :zap: other url to create a poll [View](https://bitbucket.org/projects/test/repos/my-project/commits/9900e1ec976dd98fcb63bc35ed6f286caa8c427c)
|
|
||||||
* sync fetch stuff [View](https://bitbucket.org/projects/test/repos/my-project/commits/02995c8b3d40eb7b05361c8ecf9e59a706a0fd51)
|
|
||||||
* :zap: mock for poll 1, fix new comment [View](https://bitbucket.org/projects/test/repos/my-project/commits/346bd9dc4f69296c51550f0da1b7e40a632051a7)
|
|
||||||
* stuff [View](https://bitbucket.org/projects/test/repos/my-project/commits/7e4e80f1ed3843eb8724e93d46c1d7fc598dcdd1)
|
|
||||||
* :bug: fix fetch of old params [View](https://bitbucket.org/projects/test/repos/my-project/commits/01bddc842db7b91ed2e5ebe4db036ba709dae3f4)
|
|
||||||
* :zap: add administration key after creation [View](https://bitbucket.org/projects/test/repos/my-project/commits/7bc53e198d8dc9fdae172bd596647a6b2ca1ad6f)
|
|
||||||
* :zap: choices lighter and work [View](https://bitbucket.org/projects/test/repos/my-project/commits/22bd836a16187607ee3be22cad867c7f7e2e729b)
|
|
||||||
* step to date form [View](https://bitbucket.org/projects/test/repos/my-project/commits/2e6723a1f1121c47bf9e6fb00cc043f987394940)
|
|
||||||
* fix buttons colours and manage a bit more the date form [View](https://bitbucket.org/projects/test/repos/my-project/commits/f056b0d79a2a5c894cc91d3723d16244c4abb58d)
|
|
||||||
* button to act on time [View](https://bitbucket.org/projects/test/repos/my-project/commits/a66933041f46dbaa2a15d373fd1809c82607dff3)
|
|
||||||
* change preview for dates type [View](https://bitbucket.org/projects/test/repos/my-project/commits/460e236d604beb1c24b4beaa5a1d992eb5b45dab)
|
|
||||||
* date accessor [View](https://bitbucket.org/projects/test/repos/my-project/commits/22736f709e36463e9e470e9a3385d246c85fd85f)
|
|
||||||
* :bug: handle no current poll [View](https://bitbucket.org/projects/test/repos/my-project/commits/f9d1cfff3a8f0f8d17ce622f21bc74fa9aa66aac)
|
|
||||||
* :bug: fix some config keys [View](https://bitbucket.org/projects/test/repos/my-project/commits/100569515328df6988c250f87e12124e9034227e)
|
|
||||||
* :zap: manage interval of date with date objects [View](https://bitbucket.org/projects/test/repos/my-project/commits/e227344647501e02bb3ed56da2e239e5c9e2a06a)
|
|
||||||
* :zap: disabled button when nothing is selected, detect counts [View](https://bitbucket.org/projects/test/repos/my-project/commits/0369d934bddc852e71d7a671ec41765b1a80990c)
|
|
||||||
* display a table of answers [View](https://bitbucket.org/projects/test/repos/my-project/commits/43ea524c2604891095940da3827ecd7c0003a10b)
|
|
||||||
* :bug: fix visibility of config in summary [View](https://bitbucket.org/projects/test/repos/my-project/commits/f976d65d204183c3c9f5d1d606edcf97bf6db311)
|
|
||||||
* :zap: update current answers with a previous vote [View](https://bitbucket.org/projects/test/repos/my-project/commits/9cf368f5504c1dcd28d34f9682888c65202bda6f)
|
|
||||||
* sort table of answers [View](https://bitbucket.org/projects/test/repos/my-project/commits/ca69160ea979c2995a2e5cdc2b825bb05e293fa2)
|
|
||||||
* :zap: show preferred texts in summary, icons for votes [View](https://bitbucket.org/projects/test/repos/my-project/commits/0e8d18cd8000b2b9a9fb3d74277bf24a26c8b380)
|
|
||||||
* :zap: add bulma framework, style table [View](https://bitbucket.org/projects/test/repos/my-project/commits/74ade7ac0fe52d48bec50522b648b5e0bac27d1e)
|
|
||||||
* fix select visibility [View](https://bitbucket.org/projects/test/repos/my-project/commits/bc67f26327186ef6ff9a476824eae987f3b83532)
|
|
||||||
* :zap: component to copy text to clipboard [View](https://bitbucket.org/projects/test/repos/my-project/commits/63e1a5e899cd6681ce819c53669a76b7987fb7a2)
|
|
||||||
* :zap: unify update config after fetching a poll config [View](https://bitbucket.org/projects/test/repos/my-project/commits/dd9e8950f4473dd39841ba3150bff23b8f172016)
|
|
||||||
* :fix: load vote of someone else ok [View](https://bitbucket.org/projects/test/repos/my-project/commits/b1adfaa8ea565cc6204ef975d5153ba99fc66e75)
|
|
||||||
* :zap: reset all answers before loading a stack [View](https://bitbucket.org/projects/test/repos/my-project/commits/4bcd3e475f9c7f31b5b4f8f5ffe700239929660c)
|
|
||||||
* export data in csv with rows and comments [View](https://bitbucket.org/projects/test/repos/my-project/commits/e3e5cf6638b2522c2bc7ac7181d63a6f3683e502)
|
|
||||||
* :zap: split poll display components [View](https://bitbucket.org/projects/test/repos/my-project/commits/ab23b9b2566cbd328bf9a510202c39fcd046634c)
|
|
||||||
* :gears: refacto date and poll utilities functions in a separate class [View](https://bitbucket.org/projects/test/repos/my-project/commits/c5b52764002149eff41dcd48cb876fa6ec79d562)
|
|
||||||
* :book: update refacto utilities as services [View](https://bitbucket.org/projects/test/repos/my-project/commits/44424d378aef95bb0bfc014104b5346c340ad5c7)
|
|
||||||
* :hammer: test voting choice, add ci pipeline config [View](https://bitbucket.org/projects/test/repos/my-project/commits/0a3ee9b6f0c145ed069eb07f554f20f4f294cff4)
|
|
||||||
* :zap: update package lock for CI [View](https://bitbucket.org/projects/test/repos/my-project/commits/91b1d64f0a6282fcbebd46aab328988e75be2620)
|
|
||||||
* :bug: run test in single run mode on CI [View](https://bitbucket.org/projects/test/repos/my-project/commits/a088daf4a3a1870a82c300e66d1463b0be909f5e)
|
|
||||||
* run build for prod on CI [View](https://bitbucket.org/projects/test/repos/my-project/commits/b360720e1504af9b220d579ee2b01668255c6b7d)
|
|
||||||
* :gears: update ng cli 8 [View](https://bitbucket.org/projects/test/repos/my-project/commits/8f59e654477a5b2ccea0748b59720ccb8137919e)
|
|
||||||
* :hammer: update to angular v 9 [View](https://bitbucket.org/projects/test/repos/my-project/commits/38d1d52633a3e0fb8d68433edb985754861aaf2b)
|
|
||||||
* :zap: custom date value accessor with renderer 2 [View](https://bitbucket.org/projects/test/repos/my-project/commits/1816150c6d06c51ab83cc77ebebff7ff70cc002f)
|
|
||||||
* :hammer: test with FirefoxHeadless for gitlab CI [View](https://bitbucket.org/projects/test/repos/my-project/commits/e089d19993613619c0585556f5cdc6265154a0cb)
|
|
||||||
* :zap: manage dates poll type display, fix typo in add button date [View](https://bitbucket.org/projects/test/repos/my-project/commits/15bbf0e375309a8e273c4a5b9aa0bc70cd5cdc6e)
|
|
||||||
* dates and recap side to side [View](https://bitbucket.org/projects/test/repos/my-project/commits/61bf6a289c44cac419d60e186f18594b21f1b4e8)
|
|
||||||
* :zap: ad storybook [View](https://bitbucket.org/projects/test/repos/my-project/commits/4ec9b174ad295f5cee76e515ed70b88313f6476e)
|
|
||||||
* :zap: add some types interfaces in the config [View](https://bitbucket.org/projects/test/repos/my-project/commits/49b79395644d792ac633a0df5d15da07e0c460a3)
|
|
||||||
* :book: add compodoc [View](https://bitbucket.org/projects/test/repos/my-project/commits/d7a2a8d6b78f7ea920fd794139f7f3d0d6dddd51)
|
|
||||||
* :bug: fix synced time slices [View](https://bitbucket.org/projects/test/repos/my-project/commits/ff8e02b2154d81a62a7f979dcfcc83c826a79295)
|
|
||||||
* :fix: remove puckage lock in profit of yarn [View](https://bitbucket.org/projects/test/repos/my-project/commits/ba7465fe8395c26e0d2bb6ae8fcab10d179a2497)
|
|
||||||
* :bug: add package only for CI [View](https://bitbucket.org/projects/test/repos/my-project/commits/e03359e8db170647a5534e376803a9d6e0a10ddd)
|
|
||||||
* :zap: component to select theme [View](https://bitbucket.org/projects/test/repos/my-project/commits/2d757c6726a942237c3bad27258e1820bce1e5d0)
|
|
||||||
* :art: better disposal for theme selector [View](https://bitbucket.org/projects/test/repos/my-project/commits/312b2d859943900a8784d0fbdc1cc03db0ab2be4)
|
|
||||||
* :hammer: fix for CI, bad option in npm run test [View](https://bitbucket.org/projects/test/repos/my-project/commits/a0138f84d3b01e276909a934d176a375e22529b1)
|
|
||||||
* :zap: add confirmation modal for admin user, issue #59 [View](https://bitbucket.org/projects/test/repos/my-project/commits/c0a4ec7a0c143263ed84b494ca30fcce3dc27e00)
|
|
||||||
* :bug: fix update after vote #65 [View](https://bitbucket.org/projects/test/repos/my-project/commits/75c26572fe0fcc9b305c51d10a39bd1d3fba6f43)
|
|
||||||
* :zap: can or can not modify votes issue #49 [View](https://bitbucket.org/projects/test/repos/my-project/commits/fff4e57378d9a49211a684f64433870fd67b3441)
|
|
||||||
* :zap: fix issue of selecting can or can not modify answers [View](https://bitbucket.org/projects/test/repos/my-project/commits/23dc45f1986fd8b3c06af7ba02a192737c04c3a4)
|
|
||||||
* :art: arrange create or retrieve page in two columns [View](https://bitbucket.org/projects/test/repos/my-project/commits/60c184c60ba389e8ebd1b40d6ac0d51488fe66b6)
|
|
||||||
* split many components, presentation with left nav [View](https://bitbucket.org/projects/test/repos/my-project/commits/9bdd4e0084d8c4fedf45453b947348cf55ad7416)
|
|
||||||
* :hammer: fix linting, add env default [View](https://bitbucket.org/projects/test/repos/my-project/commits/6e6b812d2d5271221d65b7d3d8c2705e134e2683)
|
|
||||||
* :zap: theme persisted in the localstorage, reload config on page reload - issue #75 [View](https://bitbucket.org/projects/test/repos/my-project/commits/936110846c4326d5772c89fbfad488b44aaa7651)
|
|
||||||
* :zap: :alien: Conserver le choix de langue au rechargement de la page - issue #54 [View](https://bitbucket.org/projects/test/repos/my-project/commits/acb091802c51ee7d1fad0b0ae08597da87cf3c52)
|
|
||||||
* :zap: export format json public [View](https://bitbucket.org/projects/test/repos/my-project/commits/e2c388da9e26e908ca278cde575ac9bff28926e4)
|
|
||||||
* :zap: add eslint [View](https://bitbucket.org/projects/test/repos/my-project/commits/e56d5cdcef59bba41e0d37711f047b6f799e45fa)
|
|
||||||
* - upgrade all packages - intall & configure linters (eslint, prettier, etc.) [View](https://bitbucket.org/projects/test/repos/my-project/commits/dd9bb8922f24cca7b33c34cb3bad1b190aebb91a)
|
|
||||||
* reformat all files + move routes.ts to AppRoutingModule [View](https://bitbucket.org/projects/test/repos/my-project/commits/18a7d4781ac44f820b870269f5134b305758e722)
|
|
||||||
* Jest tests [View](https://bitbucket.org/projects/test/repos/my-project/commits/ca5ffdc896864d47467b7562494c600b120f4d2b)
|
|
||||||
* routing for admin ith token parameter, add comments [View](https://bitbucket.org/projects/test/repos/my-project/commits/15b10f938149cc5fb8af087f773188be3c722bfe)
|
|
||||||
* :zap: admin route calling the backend [View](https://bitbucket.org/projects/test/repos/my-project/commits/8fa39250d5e5863c8987b3fc2e9464dc3bb61d7e)
|
|
||||||
* refacto : create entities, enums, services [View](https://bitbucket.org/projects/test/repos/my-project/commits/e5243204572e2dcba735335f4861f36d72fd98a5)
|
|
||||||
* :gears: move components to better semantic folders [View](https://bitbucket.org/projects/test/repos/my-project/commits/86ada008c505f6935e540023bb706cf9605588d9)
|
|
||||||
* :zap: change theme enum to correspond with themes classnames [View](https://bitbucket.org/projects/test/repos/my-project/commits/60b4bfb6197318ca5bb6e21d8dfc031da7c5d070)
|
|
||||||
* :zap: add component having a couple of configurable links, to navigate between pages [View](https://bitbucket.org/projects/test/repos/my-project/commits/da7e96526c3ed95b395b33bdaee5347ea9837f6f)
|
|
||||||
* Feature/simplify scss [View](https://bitbucket.org/projects/test/repos/my-project/commits/ba7a24708dd83cc99c81ebe064f5570fac369a38)
|
|
||||||
* gitignore add eslintcache file [View](https://bitbucket.org/projects/test/repos/my-project/commits/985b9fcdcf17b35790e341318b1a109b3e454a79)
|
|
||||||
* update env api endpoints [View](https://bitbucket.org/projects/test/repos/my-project/commits/23b8622a4f2b8d74e1b2d80319658ac70bcd2e21)
|
|
||||||
* rebase branch 'feature/refacto_1' of https://framagit.org/framasoft/framadate/funky-framadate-front into feature/refacto_1 [View](https://bitbucket.org/projects/test/repos/my-project/commits/7a4f16e4845f74894bcbfd7344205f005c243b5e)
|
|
||||||
* :bug: remove admin component request [View](https://bitbucket.org/projects/test/repos/my-project/commits/4ec9091233986af49d5c271b91bdbe33b18aaebe)
|
|
||||||
* :bug: fix window variable in html [View](https://bitbucket.org/projects/test/repos/my-project/commits/48636ad9478e002da705bd96c330333cb3bb3fc9)
|
|
||||||
* split config service & dispatch [View](https://bitbucket.org/projects/test/repos/my-project/commits/3997dd090e076bcd3f92562e231f118eb5cc731f)
|
|
||||||
* upgrade archi with modules [View](https://bitbucket.org/projects/test/repos/my-project/commits/7029368ab1fc7f4ebbddcaca3d7140f4441d2873)
|
|
||||||
* - replace date-fns by momentJS - install ng2-chart along with chart.js [View](https://bitbucket.org/projects/test/repos/my-project/commits/91be2a3048dbaa0179fa97f8cbc027d06b276f4a)
|
|
||||||
* 👷 — Build and deploy on Gitlab pages [View](https://bitbucket.org/projects/test/repos/my-project/commits/f6753822183d63a53c908017740b0908a600f3cc)
|
|
||||||
* 👷 — Try to deploy build on Gitlab page even if test fails [View](https://bitbucket.org/projects/test/repos/my-project/commits/f1cbf175a9c93681ffa0e438564cc76925e3c87a)
|
|
||||||
* 👷 — Deploy build on Gitlab page before tests [View](https://bitbucket.org/projects/test/repos/my-project/commits/96354f6202c0de8892a7516658ea1a5e65a28615)
|
|
||||||
* 👷 — Modify <base> tag in build’s index.html [View](https://bitbucket.org/projects/test/repos/my-project/commits/da854454aaee8390e9430def4674577b747433cb)
|
|
||||||
* 👷 — Cleaner script for Gitlab page build [View](https://bitbucket.org/projects/test/repos/my-project/commits/645b25de790b43c19191545beecd4923a29b71eb)
|
|
||||||
* [feat] :zap: add a floating button to give feedback [View](https://bitbucket.org/projects/test/repos/my-project/commits/442530983b8015a291ae34be78d78c9e061adf7d)
|
|
||||||
* :style: style for feedback options, fixed floating button [View](https://bitbucket.org/projects/test/repos/my-project/commits/9057e890a408199eb96b6a6b7a92336a4b31582c)
|
|
||||||
* default to hide menu [View](https://bitbucket.org/projects/test/repos/my-project/commits/93ea16127475cd7611b70684ea6ff2f6d90ce96e)
|
|
||||||
* :zap: refacto feedback, :art: style for popup links, place icons before text [View](https://bitbucket.org/projects/test/repos/my-project/commits/cc27f31e0ecf08c5cae26068d19e1e715e921844)
|
|
||||||
* :zap: styling themes [View](https://bitbucket.org/projects/test/repos/my-project/commits/23c6b9400ee2d2917e3f5e8cf3d327fd2a537747)
|
|
||||||
* :book: add footer links, :art: set default theme to light, fix some details with black theme. [View](https://bitbucket.org/projects/test/repos/my-project/commits/a93a34a638ecca03dfc6466f0b347c9961cff18f)
|
|
||||||
* :art: primary button, section to find back my polls on home [View](https://bitbucket.org/projects/test/repos/my-project/commits/b2a739016fbc39b69138127fe60de621698aa904)
|
|
||||||
* add feedback button, load administration module from app module [View](https://bitbucket.org/projects/test/repos/my-project/commits/9c60f8a379fffea4574c86799c886aee37dd9968)
|
|
||||||
* :zap: change branch name in update demo script [View](https://bitbucket.org/projects/test/repos/my-project/commits/a1de41699e4aeeb6149f2a93f8c98696ff952a40)
|
|
||||||
* :zap: demo build script back to life [View](https://bitbucket.org/projects/test/repos/my-project/commits/4f0a29e806f9a87b97c7024487b195b3c90896eb)
|
|
||||||
* add user settings button & modal [View](https://bitbucket.org/projects/test/repos/my-project/commits/355fed53f3dc45fc27245e5b13dcefadac774b87)
|
|
||||||
* add json-server + refacto [View](https://bitbucket.org/projects/test/repos/my-project/commits/ae2974967048a6bbbba65df79591a1dcff970064)
|
|
||||||
* clean refacto [View](https://bitbucket.org/projects/test/repos/my-project/commits/3125e86f0bdc1ab74cec9baeb273588afe92ca90)
|
|
||||||
* replace primeng by material && improvments [View](https://bitbucket.org/projects/test/repos/my-project/commits/f9b847b305192506b2fc8109f187f6a45afeccd3)
|
|
||||||
* add route resolver for lazy-loading [View](https://bitbucket.org/projects/test/repos/my-project/commits/63600c759ebbdba5473789b6b030fe8e33a767ae)
|
|
||||||
* refacto routing [View](https://bitbucket.org/projects/test/repos/my-project/commits/a62e00c6adf4a0a62a617e0e5a9a054b6bfd6803)
|
|
||||||
|
|
||||||
|
|
@ -12,10 +12,12 @@ FR: Un logiciel libre de sondage fait par les contributeurs de l'association Fra
|
|||||||
* Accesibility
|
* Accesibility
|
||||||
* Licence GNU affero V3
|
* Licence GNU affero V3
|
||||||
|
|
||||||
# Présentation
|
# Framadate - funky version
|
||||||
FR: Un logiciel libre de sondage fait par les contributeurs de l'association Framasoft, avec une API de backend en Symfony 5.
|
FR: Un logiciel libre de sondage fait par les contributeurs de l'association Framasoft, avec une API backend.
|
||||||
|
EN: A libre polling software made by contributors around the French association Framasoft.
|
||||||
|
This version uses a brand new backend API.
|
||||||
|
|
||||||
## Pour débuter
|
## Pour débuter - getting started
|
||||||
[lire la doc pour débuter votre Funky Framadate](GETTING_STARTED.md)
|
[lire la doc pour débuter votre Funky Framadate](GETTING_STARTED.md)
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
@ -57,7 +59,7 @@ notes-de-reunion)
|
|||||||
|
|
||||||
# Exemple de maquette de la nouvelle version
|
# Exemple de maquette de la nouvelle version
|
||||||
|
|
||||||
![funky_framadate_maquette](img/framadate_funky_design.png)
|
![funky_framadate_maquette](uploads/535da7c3a5ce5fae67b2b497bdc4631d/funky_framadate_maquette.png)
|
||||||
|
|
||||||
|
|
||||||
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.1.
|
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.1.
|
||||||
|
17
mkdocs.yml
17
mkdocs.yml
@ -7,15 +7,14 @@ docs_dir: docs
|
|||||||
# index.md
|
# index.md
|
||||||
nav:
|
nav:
|
||||||
- Accueil:
|
- Accueil:
|
||||||
- Accueil : index.en.md
|
- index.en.md
|
||||||
- Accueil : index.fr.md
|
- index.fr.md
|
||||||
- en cours: TODO.md
|
- en cours: TODO.md
|
||||||
- Guide utilisateur:
|
- Guide utilisateur:
|
||||||
- Guide général: user-guide/index.md
|
- user-guide/index.md
|
||||||
- License: user-guide/LICENCE.en.md
|
- LICENCE.md
|
||||||
- Guide administrateur:
|
- Guide administrateur:
|
||||||
- Changelog: changelog.md
|
- Changelog: changelog.md
|
||||||
- Changelog Détaillé: ../../CHANGELOG.md
|
|
||||||
- Guide développeur:
|
- Guide développeur:
|
||||||
- Démarrer: GETTING_STARTED.md
|
- Démarrer: GETTING_STARTED.md
|
||||||
- Personnaliser: customisation.md
|
- Personnaliser: customisation.md
|
||||||
@ -25,7 +24,7 @@ nav:
|
|||||||
- Angular: angular.md
|
- Angular: angular.md
|
||||||
- Traduction: cadrage/i18n.md
|
- Traduction: cadrage/i18n.md
|
||||||
- Historique:
|
- Historique:
|
||||||
- Historique: user-guide/history.md
|
- Historique: history.md
|
||||||
- Spécifications: cadrage/specifications-fonctionnelles.md
|
- Spécifications: cadrage/specifications-fonctionnelles.md
|
||||||
- Réunions:
|
- Réunions:
|
||||||
- Modèle vierge: reunions/0_blank_notes.md
|
- Modèle vierge: reunions/0_blank_notes.md
|
||||||
@ -53,9 +52,9 @@ plugins:
|
|||||||
subsection: "Sous section"
|
subsection: "Sous section"
|
||||||
page title: "Page avec un titre traduite"
|
page title: "Page avec un titre traduite"
|
||||||
|
|
||||||
#theme:
|
theme:
|
||||||
# name: slate
|
name: slate
|
||||||
# nav_style: dark
|
nav_style: dark
|
||||||
extra:
|
extra:
|
||||||
# Default mkdocs-material alternate links for untranslated pages
|
# Default mkdocs-material alternate links for untranslated pages
|
||||||
# https://squidfunk.github.io/mkdocs-material/setup/changing-the-language/#site-language-selector
|
# https://squidfunk.github.io/mkdocs-material/setup/changing-the-language/#site-language-selector
|
||||||
|
@ -40,7 +40,7 @@ export class PollConfig {
|
|||||||
myEmail: string = environment.production ? '' : 'tktest@tktest.com';
|
myEmail: string = environment.production ? '' : 'tktest@tktest.com';
|
||||||
myPolls: any = []; // list of retrieved polls from the backend api
|
myPolls: any = []; // list of retrieved polls from the backend api
|
||||||
/*
|
/*
|
||||||
date specific poll, we have the choice to setup different hours (timeSlices) for all possible dates (dateChoices), or use the same hours for all dates
|
date specific poll, we have the choice to setup different hours (timeSlices) for all possible dates (dateList), or use the same hours for all dates
|
||||||
*/
|
*/
|
||||||
allowSeveralHours = 'true';
|
allowSeveralHours = 'true';
|
||||||
// access
|
// access
|
||||||
@ -63,7 +63,7 @@ export class PollConfig {
|
|||||||
owner_modifier_token = ''; // key to change a vote stack
|
owner_modifier_token = ''; // key to change a vote stack
|
||||||
canModifyAnswers = true; // bool for the frontend selector
|
canModifyAnswers = true; // bool for the frontend selector
|
||||||
whoCanChangeAnswers = 'everybody'; // everybody, self, nobody (= just admin)
|
whoCanChangeAnswers = 'everybody'; // everybody, self, nobody (= just admin)
|
||||||
dateList: any = otherDefaultDates; // sets of dateChoices as strings, config to set identical time for dateChoices in a special dateChoices poll
|
dateList: any = otherDefaultDates; // sets of dateList as strings, config to set identical time for dateList in a special dateList poll
|
||||||
timeList: DateChoice[] = otherDefaultDates; // ranges of time expressed as strings
|
timeList: DateChoice[] = otherDefaultDates; // ranges of time expressed as strings
|
||||||
|
|
||||||
answers: PollAnswer[] = defaultAnswers;
|
answers: PollAnswer[] = defaultAnswers;
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
{"__symbolic":"module","version":1,"metadata":{"DATE_VALUE_ACCESSOR":{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR"},"useExisting":{"__symbolic":"reference","name":"DateValueAccessor"},"multi":true},"DateValueAccessor":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[useValueAsDate]","providers":[{"__symbolic":"reference","name":"DATE_VALUE_ACCESSOR"}]}]}],"members":{"onChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener"},"arguments":["input",["$event.target.valueAsDate"]]}]}],"onTouched":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener"},"arguments":["blur",[]]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Renderer"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}]}}}}
|
@ -0,0 +1,49 @@
|
|||||||
|
import { Directive, ElementRef, forwardRef, HostListener, Renderer2 } from '@angular/core';
|
||||||
|
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
|
||||||
|
|
||||||
|
export const DATE_VALUE_ACCESSOR: any = {
|
||||||
|
provide: NG_VALUE_ACCESSOR,
|
||||||
|
useExisting: forwardRef(() => DateValueAccessor),
|
||||||
|
multi: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The accessor for writing a value and listening to changes on a date input element
|
||||||
|
*
|
||||||
|
* ### Example
|
||||||
|
* `<input type="date" choice_label="myBirthday" ngModel useValueAsDate>`
|
||||||
|
*/
|
||||||
|
@Directive({
|
||||||
|
// this selector changes the previous behavior silently and might break existing code
|
||||||
|
// selector: 'input[type=date][formControlName],input[type=date][formControl],input[type=date][ngModel]',
|
||||||
|
|
||||||
|
// this selector is an opt-in version
|
||||||
|
selector: '[useValueAsDate]',
|
||||||
|
providers: [DATE_VALUE_ACCESSOR],
|
||||||
|
})
|
||||||
|
export class DateValueAccessor implements ControlValueAccessor {
|
||||||
|
@HostListener('input', ['$event.target.valueAsDate']) onChange = (_: any) => {};
|
||||||
|
@HostListener('blur', []) onTouched = () => {};
|
||||||
|
|
||||||
|
constructor(private _renderer: Renderer2, private _elementRef: ElementRef) {}
|
||||||
|
|
||||||
|
writeValue(value: Date): void {
|
||||||
|
if (!value) {
|
||||||
|
this._renderer.setProperty(this._elementRef.nativeElement, 'value', null);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._renderer.setProperty(this._elementRef.nativeElement, 'valueAsDate', value);
|
||||||
|
}
|
||||||
|
|
||||||
|
registerOnChange(fn: (_: any) => void): void {
|
||||||
|
this.onChange = fn;
|
||||||
|
}
|
||||||
|
|
||||||
|
registerOnTouched(fn: () => void): void {
|
||||||
|
this.onTouched = fn;
|
||||||
|
}
|
||||||
|
|
||||||
|
setDisabledState(isDisabled: boolean): void {
|
||||||
|
this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
{"__symbolic":"module","version":1,"metadata":{},"exports":[{"from":"./module"},{"from":"./date-value-accessor"}]}
|
2
mocks/old-stuff/custom-lib/date-value-accessor/index.ts
Normal file
2
mocks/old-stuff/custom-lib/date-value-accessor/index.ts
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export * from './module';
|
||||||
|
export * from './date-value-accessor';
|
@ -0,0 +1 @@
|
|||||||
|
{"__symbolic":"module","version":1,"metadata":{"DateValueAccessorModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"declarations":[{"__symbolic":"reference","module":"./date-value-accessor","name":"DateValueAccessor"}],"exports":[{"__symbolic":"reference","module":"./date-value-accessor","name":"DateValueAccessor"}]}]}]}}}
|
8
mocks/old-stuff/custom-lib/date-value-accessor/module.ts
Normal file
8
mocks/old-stuff/custom-lib/date-value-accessor/module.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { DateValueAccessor } from './date-value-accessor';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
declarations: [DateValueAccessor],
|
||||||
|
exports: [DateValueAccessor],
|
||||||
|
})
|
||||||
|
export class DateValueAccessorModule {}
|
11
mocks/old-stuff/mocks/choice.ts
Normal file
11
mocks/old-stuff/mocks/choice.ts
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
export const mockChoice = {
|
||||||
|
id: 11,
|
||||||
|
date: {
|
||||||
|
date: '2020-01-30 12:25:13.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
text: 'Les mondes engloutis',
|
||||||
|
url: null,
|
||||||
|
answer: null,
|
||||||
|
};
|
4
mocks/old-stuff/mocks/comment-same-text-error.json
Normal file
4
mocks/old-stuff/mocks/comment-same-text-error.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"message": "anti flood déclenché",
|
||||||
|
"details": "votre deriner commentaire a exactement le même contenu que celui ci, il n'a donc pas été créé"
|
||||||
|
}
|
4
mocks/old-stuff/mocks/comment-too-fast-error.json
Normal file
4
mocks/old-stuff/mocks/comment-too-fast-error.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"message": "anti flood déclenché",
|
||||||
|
"details": "votre deriner commentaire a été envoyé il y a moins de 5 secondes"
|
||||||
|
}
|
565
mocks/old-stuff/mocks/config-poll-dessins-animes.json
Normal file
565
mocks/old-stuff/mocks/config-poll-dessins-animes.json
Normal file
@ -0,0 +1,565 @@
|
|||||||
|
{
|
||||||
|
"message": "your poll config",
|
||||||
|
"data": {
|
||||||
|
"id": 3,
|
||||||
|
"title": "dessin animé préféré",
|
||||||
|
"customUrl": null,
|
||||||
|
"description": "choisissez votre animé préféré",
|
||||||
|
"creationDate": {
|
||||||
|
"date": "2020-01-20 16:45:48.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"expiracyDate": {
|
||||||
|
"date": "2020-01-20 16:45:48.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"owner": {
|
||||||
|
"__initializer__": null,
|
||||||
|
"__cloner__": null,
|
||||||
|
"__isInitialized__": true,
|
||||||
|
"pseudo": "tk_TEST",
|
||||||
|
"email": "tktest@tktest.com"
|
||||||
|
},
|
||||||
|
"kind": "text",
|
||||||
|
"allowedAnswers": [
|
||||||
|
"yes"
|
||||||
|
],
|
||||||
|
"modificationPolicy": "self",
|
||||||
|
"mailOnComment": null,
|
||||||
|
"mailOnVote": null,
|
||||||
|
"hideResults": null,
|
||||||
|
"showResultEvenIfPasswords": null,
|
||||||
|
"votes": {},
|
||||||
|
"stacksOfVotes": {},
|
||||||
|
"choices": {},
|
||||||
|
"comments": {},
|
||||||
|
"defaultExpiracyDaysFromNow": 60
|
||||||
|
},
|
||||||
|
"stacks_count": 10,
|
||||||
|
"stacks": [
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"pseudo": "voting_people_TEST",
|
||||||
|
"creation_date": {
|
||||||
|
"date": "2020-01-20 16:45:48.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"votes": [
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"vote_id": 4,
|
||||||
|
"value": "yes",
|
||||||
|
"choice_id": 7,
|
||||||
|
"text": "Les mystérieuses cités d'or"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"vote_id": 5,
|
||||||
|
"value": "maybe",
|
||||||
|
"choice_id": 6,
|
||||||
|
"text": "Boumbo petite automobile"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"pseudo": "voting_people_TEST",
|
||||||
|
"creation_date": {
|
||||||
|
"date": "2020-01-20 16:45:48.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"votes": [
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"vote_id": 6,
|
||||||
|
"value": "yes",
|
||||||
|
"choice_id": 6,
|
||||||
|
"text": "Boumbo petite automobile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"vote_id": 7,
|
||||||
|
"value": "yes",
|
||||||
|
"choice_id": 7,
|
||||||
|
"text": "Les mystérieuses cités d'or"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"vote_id": 8,
|
||||||
|
"value": "no",
|
||||||
|
"choice_id": 7,
|
||||||
|
"text": "Les mystérieuses cités d'or"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"pseudo": "voting_people_TEST",
|
||||||
|
"creation_date": {
|
||||||
|
"date": "2020-01-21 10:33:26.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"votes": [
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"vote_id": 9,
|
||||||
|
"value": "no",
|
||||||
|
"choice_id": 5,
|
||||||
|
"text": "Vic le viking"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"vote_id": 10,
|
||||||
|
"value": "maybe",
|
||||||
|
"choice_id": 6,
|
||||||
|
"text": "Boumbo petite automobile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"vote_id": 11,
|
||||||
|
"value": "yes",
|
||||||
|
"choice_id": 7,
|
||||||
|
"text": "Les mystérieuses cités d'or"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"pseudo": "voting_people_TEST",
|
||||||
|
"creation_date": {
|
||||||
|
"date": "2020-01-21 10:36:58.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"votes": [
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"vote_id": 12,
|
||||||
|
"value": "no",
|
||||||
|
"choice_id": 5,
|
||||||
|
"text": "Vic le viking"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"vote_id": 13,
|
||||||
|
"value": "maybe",
|
||||||
|
"choice_id": 6,
|
||||||
|
"text": "Boumbo petite automobile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"vote_id": 14,
|
||||||
|
"value": "yes",
|
||||||
|
"choice_id": 7,
|
||||||
|
"text": "Les mystérieuses cités d'or"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 7,
|
||||||
|
"pseudo": "voting_people_TEST",
|
||||||
|
"creation_date": {
|
||||||
|
"date": "2020-01-21 10:39:12.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"votes": [
|
||||||
|
{
|
||||||
|
"id": 7,
|
||||||
|
"vote_id": 15,
|
||||||
|
"value": "no",
|
||||||
|
"choice_id": 5,
|
||||||
|
"text": "Vic le viking"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 7,
|
||||||
|
"vote_id": 16,
|
||||||
|
"value": "maybe",
|
||||||
|
"choice_id": 6,
|
||||||
|
"text": "Boumbo petite automobile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 7,
|
||||||
|
"vote_id": 17,
|
||||||
|
"value": "yes",
|
||||||
|
"choice_id": 7,
|
||||||
|
"text": "Les mystérieuses cités d'or"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 8,
|
||||||
|
"pseudo": "voting_people_TEST",
|
||||||
|
"creation_date": {
|
||||||
|
"date": "2020-01-21 10:39:13.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"votes": [
|
||||||
|
{
|
||||||
|
"id": 8,
|
||||||
|
"vote_id": 18,
|
||||||
|
"value": "no",
|
||||||
|
"choice_id": 5,
|
||||||
|
"text": "Vic le viking"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 8,
|
||||||
|
"vote_id": 19,
|
||||||
|
"value": "maybe",
|
||||||
|
"choice_id": 6,
|
||||||
|
"text": "Boumbo petite automobile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 8,
|
||||||
|
"vote_id": 20,
|
||||||
|
"value": "yes",
|
||||||
|
"choice_id": 7,
|
||||||
|
"text": "Les mystérieuses cités d'or"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 9,
|
||||||
|
"pseudo": "voting_people_TEST",
|
||||||
|
"creation_date": {
|
||||||
|
"date": "2020-01-21 10:42:19.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"votes": [
|
||||||
|
{
|
||||||
|
"id": 9,
|
||||||
|
"vote_id": 21,
|
||||||
|
"value": "no",
|
||||||
|
"choice_id": 5,
|
||||||
|
"text": "Vic le viking"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 9,
|
||||||
|
"vote_id": 22,
|
||||||
|
"value": "maybe",
|
||||||
|
"choice_id": 6,
|
||||||
|
"text": "Boumbo petite automobile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 9,
|
||||||
|
"vote_id": 23,
|
||||||
|
"value": "yes",
|
||||||
|
"choice_id": 7,
|
||||||
|
"text": "Les mystérieuses cités d'or"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 10,
|
||||||
|
"pseudo": "voting_people_TEST",
|
||||||
|
"creation_date": {
|
||||||
|
"date": "2020-01-21 10:42:32.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"votes": [
|
||||||
|
{
|
||||||
|
"id": 10,
|
||||||
|
"vote_id": 24,
|
||||||
|
"value": "no",
|
||||||
|
"choice_id": 5,
|
||||||
|
"text": "Vic le viking"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 10,
|
||||||
|
"vote_id": 25,
|
||||||
|
"value": "maybe",
|
||||||
|
"choice_id": 6,
|
||||||
|
"text": "Boumbo petite automobile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 10,
|
||||||
|
"vote_id": 26,
|
||||||
|
"value": "yes",
|
||||||
|
"choice_id": 7,
|
||||||
|
"text": "Les mystérieuses cités d'or"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 11,
|
||||||
|
"pseudo": "voting_people_TEST",
|
||||||
|
"creation_date": {
|
||||||
|
"date": "2020-01-21 10:43:46.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"votes": [
|
||||||
|
{
|
||||||
|
"id": 11,
|
||||||
|
"vote_id": 27,
|
||||||
|
"value": "no",
|
||||||
|
"choice_id": 5,
|
||||||
|
"text": "Vic le viking"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 11,
|
||||||
|
"vote_id": 28,
|
||||||
|
"value": "maybe",
|
||||||
|
"choice_id": 6,
|
||||||
|
"text": "Boumbo petite automobile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 11,
|
||||||
|
"vote_id": 29,
|
||||||
|
"value": "yes",
|
||||||
|
"choice_id": 7,
|
||||||
|
"text": "Les mystérieuses cités d'or"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 12,
|
||||||
|
"pseudo": "voting_people_TEST",
|
||||||
|
"creation_date": {
|
||||||
|
"date": "2020-01-21 10:44:35.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"votes": [
|
||||||
|
{
|
||||||
|
"id": 12,
|
||||||
|
"vote_id": 30,
|
||||||
|
"value": "no",
|
||||||
|
"choice_id": 5,
|
||||||
|
"text": "Vic le viking"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 12,
|
||||||
|
"vote_id": 31,
|
||||||
|
"value": "maybe",
|
||||||
|
"choice_id": 6,
|
||||||
|
"text": "Boumbo petite automobile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 12,
|
||||||
|
"vote_id": 32,
|
||||||
|
"value": "yes",
|
||||||
|
"choice_id": 7,
|
||||||
|
"text": "Les mystérieuses cités d'or"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"choices_count": 7,
|
||||||
|
"choices": [
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-20 16:45:48.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"text": "Vic le viking"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-20 16:45:48.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"text": "Boumbo petite automobile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 7,
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-20 16:45:48.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"text": "Les mystérieuses cités d'or"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 8,
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-20 16:45:48.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"text": "Les mondes engloutis"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 9,
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-20 16:45:48.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"text": "Foot 2 rue"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 10,
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-20 16:45:48.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"text": "Le chat, la vache, et l'océan"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 11,
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-20 16:45:48.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"text": "Digimon"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"comments": [
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"text": "wouah trop bien framadate!",
|
||||||
|
"pseudo": "tk_TEST",
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-20 16:58:56.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"text": "wouah trop bien framadate!",
|
||||||
|
"pseudo": "tk_TEST",
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-20 16:59:48.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"text": "wouah trop bien framadate!",
|
||||||
|
"pseudo": "tk_TEST",
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-21 10:12:02.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"text": "wouah trop bien framadate!",
|
||||||
|
"pseudo": "tk_TEST",
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-21 10:12:34.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 7,
|
||||||
|
"text": "wouah trop bien framadate!",
|
||||||
|
"pseudo": "tk_TEST",
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-21 10:14:20.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 8,
|
||||||
|
"text": "wouah trop bien framadate!",
|
||||||
|
"pseudo": "tk_TEST",
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-21 10:15:09.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 9,
|
||||||
|
"text": "wouah trop bien framadate!",
|
||||||
|
"pseudo": "tk_TEST",
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-21 10:15:10.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 10,
|
||||||
|
"text": "wouah trop bien framadate!",
|
||||||
|
"pseudo": "tk_TEST",
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-21 10:15:35.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 11,
|
||||||
|
"text": "wouah trop bien framadate!",
|
||||||
|
"pseudo": "tk_TEST",
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-21 10:26:58.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 12,
|
||||||
|
"text": "wouah trop bien framadate!",
|
||||||
|
"pseudo": "tk_TEST",
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-21 10:27:03.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 13,
|
||||||
|
"text": "wouah trop bien framadate!",
|
||||||
|
"pseudo": "tk_TEST",
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-21 10:27:10.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 14,
|
||||||
|
"text": "wouah trop bien framadate wouhouuu!",
|
||||||
|
"pseudo": "tk_TEST",
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-21 10:34:04.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 15,
|
||||||
|
"text": "wouah trop bien framadate wouhouucghfdghu!",
|
||||||
|
"pseudo": "tk_TEST",
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-21 10:36:33.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 16,
|
||||||
|
"text": "wouah trop bien framadate woudghdghhouucghfdghu!",
|
||||||
|
"pseudo": "tk_TEST",
|
||||||
|
"date": {
|
||||||
|
"date": "2020-01-21 10:50:43.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"comments_count": 14
|
||||||
|
}
|
48
mocks/old-stuff/mocks/created-comment.json
Normal file
48
mocks/old-stuff/mocks/created-comment.json
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"message": "you created a comment",
|
||||||
|
"data": {
|
||||||
|
"your_comment": {
|
||||||
|
"id": 14,
|
||||||
|
"poll": {
|
||||||
|
"id": 3,
|
||||||
|
"title": "dessin animé préféré",
|
||||||
|
"customUrl": null,
|
||||||
|
"description": "choisissez votre animé préféré",
|
||||||
|
"creationDate": {
|
||||||
|
"date": "2020-01-20 16:45:48.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"expiracyDate": {
|
||||||
|
"date": "2020-01-20 16:45:48.000000",
|
||||||
|
"timezone_type": 3,
|
||||||
|
"timezone": "Europe/Berlin"
|
||||||
|
},
|
||||||
|
"owner": {
|
||||||
|
"__initializer__": null,
|
||||||
|
"__cloner__": null,
|
||||||
|
"__isInitialized__": true,
|
||||||
|
"pseudo": "tk_TEST",
|
||||||
|
"email": "tktest@tktest.com"
|
||||||
|
},
|
||||||
|
"kind": "text",
|
||||||
|
"allowedAnswers": [
|
||||||
|
"yes"
|
||||||
|
],
|
||||||
|
"modificationPolicy": "self",
|
||||||
|
"mailOnComment": null,
|
||||||
|
"mailOnVote": null,
|
||||||
|
"hideResults": null,
|
||||||
|
"showResultEvenIfPasswords": null,
|
||||||
|
"votes": {},
|
||||||
|
"stacksOfVotes": {},
|
||||||
|
"choices": {},
|
||||||
|
"comments": {},
|
||||||
|
"defaultExpiracyDaysFromNow": 60
|
||||||
|
},
|
||||||
|
"text": "wouah trop bien framadate wouhouuu!",
|
||||||
|
"token": "5e25cb2c6e533"
|
||||||
|
},
|
||||||
|
"poll_comments": {}
|
||||||
|
}
|
||||||
|
}
|
22
mocks/old-stuff/mocks/mock-comments.ts
Normal file
22
mocks/old-stuff/mocks/mock-comments.ts
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
export const mockComments = [
|
||||||
|
{
|
||||||
|
pseudo: 'Bulbizarre',
|
||||||
|
date: {
|
||||||
|
date: '2020-01-22 16:00:22.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Paris',
|
||||||
|
},
|
||||||
|
text:
|
||||||
|
'Pokem ipsum dolor sit amet Electric Cottonee Scratch Leech Life Ice Berry Ducklett. Leaf Green Durant Zoroark\n' +
|
||||||
|
' Skitty Rock Luxio Surskit. Glacier Badge',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pseudo: 'Marylin',
|
||||||
|
date: {
|
||||||
|
date: '2020-01-22 16:00:22.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Paris',
|
||||||
|
},
|
||||||
|
text: "j'ai vu de la lumière o_o",
|
||||||
|
},
|
||||||
|
];
|
52
mocks/old-stuff/mocks/mock-graph.ts
Normal file
52
mocks/old-stuff/mocks/mock-graph.ts
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
export const mockGraphConfig = {
|
||||||
|
step: 0,
|
||||||
|
stepMax: 3,
|
||||||
|
pollType: 'special dates',
|
||||||
|
title: '',
|
||||||
|
description: '',
|
||||||
|
myName: '',
|
||||||
|
visibility: 'link_only',
|
||||||
|
// date specific poll
|
||||||
|
allowSeveralHours: 'true',
|
||||||
|
dateLgfgfgfgist: ['jeudi', 'vendredi', 'samedi'], // sets of dateList as strings
|
||||||
|
timeList: ['08:00', '08:30', '09:00'], // ranges of time expressed as strings
|
||||||
|
answers: [
|
||||||
|
{
|
||||||
|
id: 0,
|
||||||
|
text: 'no',
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
text: 'yes',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
text: 'maybe',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
text: 'maybe',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
text: 'maybe',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 5,
|
||||||
|
text: 'maybe',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 6,
|
||||||
|
text: 'maybe',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 7,
|
||||||
|
text: 'maybe',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 8,
|
||||||
|
text: 'maybe',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
529
mocks/old-stuff/mocks/mock-poll3.ts
Normal file
529
mocks/old-stuff/mocks/mock-poll3.ts
Normal file
@ -0,0 +1,529 @@
|
|||||||
|
export const mockPoll3 = {
|
||||||
|
message: 'your poll config',
|
||||||
|
poll: {
|
||||||
|
id: 4,
|
||||||
|
title: 'dessin animé préféré',
|
||||||
|
customUrl: null,
|
||||||
|
description: 'choisissez votre animé préféré',
|
||||||
|
creationDate: {
|
||||||
|
date: '2020-01-30 12:25:13.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
expiracyDate: {
|
||||||
|
date: '2020-01-30 12:25:13.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
owner: {
|
||||||
|
__initializer__: null,
|
||||||
|
__cloner__: null,
|
||||||
|
__isInitialized__: true,
|
||||||
|
pseudo: 'tk_TEST',
|
||||||
|
email: 'tktest@tktest.com',
|
||||||
|
},
|
||||||
|
kind: 'text',
|
||||||
|
allowedAnswers: [
|
||||||
|
// "yes", "maybe", "no"
|
||||||
|
'yes',
|
||||||
|
],
|
||||||
|
modificationPolicy: 'everybody',
|
||||||
|
mailOnComment: null,
|
||||||
|
mailOnVote: null,
|
||||||
|
hideResults: null,
|
||||||
|
showResultEvenIfPasswords: null,
|
||||||
|
votes: {},
|
||||||
|
stacksOfVotes: {},
|
||||||
|
choices: {},
|
||||||
|
choices_count: {
|
||||||
|
counts: {
|
||||||
|
'10': {
|
||||||
|
choice_id: 10,
|
||||||
|
choice_text: "Les mystérieuses cités d'or",
|
||||||
|
id: 4,
|
||||||
|
score: 2.5,
|
||||||
|
yes: {
|
||||||
|
count: 2,
|
||||||
|
people: ['voting_people_TEST', 'voting_people_TEST'],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 1,
|
||||||
|
people: ['Nikolas Edison'],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 1,
|
||||||
|
people: ['voting_people_TEST'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'9': {
|
||||||
|
choice_id: 9,
|
||||||
|
choice_text: 'Boumbo petite automobile',
|
||||||
|
id: 5,
|
||||||
|
score: 2.5,
|
||||||
|
yes: {
|
||||||
|
count: 2,
|
||||||
|
people: ['voting_people_TEST', 'Billie Jean'],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 1,
|
||||||
|
people: ['voting_people_TEST'],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'12': {
|
||||||
|
choice_id: 12,
|
||||||
|
choice_text: 'Foot 2 rue',
|
||||||
|
id: 14,
|
||||||
|
score: 0.5,
|
||||||
|
yes: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 1,
|
||||||
|
people: ['Nikolas Edison'],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'11': {
|
||||||
|
choice_id: 11,
|
||||||
|
choice_text: 'Les mondes engloutis',
|
||||||
|
id: 15,
|
||||||
|
score: 1.5,
|
||||||
|
yes: {
|
||||||
|
count: 1,
|
||||||
|
people: ['Billie Jean'],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 1,
|
||||||
|
people: ['Wulfila'],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'13': {
|
||||||
|
choice_id: 13,
|
||||||
|
choice_text: "Le chat, la vache, et l'océan",
|
||||||
|
id: 16,
|
||||||
|
score: 1,
|
||||||
|
yes: {
|
||||||
|
count: 1,
|
||||||
|
people: ['Wulfila'],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
maxScore: 2.5,
|
||||||
|
},
|
||||||
|
comments: {},
|
||||||
|
defaultExpiracyDaysFromNow: 60,
|
||||||
|
},
|
||||||
|
stacks_count: 5,
|
||||||
|
stacks: [
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
pseudo: 'voting_people_TEST',
|
||||||
|
creation_date: {
|
||||||
|
date: '2020-01-30 12:25:13.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
votes: {
|
||||||
|
'8': {
|
||||||
|
choice_id: 8,
|
||||||
|
},
|
||||||
|
'9': {
|
||||||
|
id: 3,
|
||||||
|
vote_id: 5,
|
||||||
|
value: 'maybe',
|
||||||
|
choice_id: 9,
|
||||||
|
text: 'Boumbo petite automobile',
|
||||||
|
},
|
||||||
|
'10': {
|
||||||
|
id: 3,
|
||||||
|
vote_id: 4,
|
||||||
|
value: 'yes',
|
||||||
|
choice_id: 10,
|
||||||
|
text: "Les mystérieuses cités d'or",
|
||||||
|
},
|
||||||
|
'11': {
|
||||||
|
choice_id: 11,
|
||||||
|
},
|
||||||
|
'12': {
|
||||||
|
choice_id: 12,
|
||||||
|
},
|
||||||
|
'13': {
|
||||||
|
choice_id: 13,
|
||||||
|
},
|
||||||
|
'14': {
|
||||||
|
choice_id: 14,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
pseudo: 'voting_people_TEST',
|
||||||
|
creation_date: {
|
||||||
|
date: '2020-01-30 12:25:13.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
votes: {
|
||||||
|
'8': {
|
||||||
|
choice_id: 8,
|
||||||
|
},
|
||||||
|
'9': {
|
||||||
|
id: 4,
|
||||||
|
vote_id: 6,
|
||||||
|
value: 'yes',
|
||||||
|
choice_id: 9,
|
||||||
|
text: 'Boumbo petite automobile',
|
||||||
|
},
|
||||||
|
'10': {
|
||||||
|
id: 4,
|
||||||
|
vote_id: 8,
|
||||||
|
value: 'no',
|
||||||
|
choice_id: 10,
|
||||||
|
text: "Les mystérieuses cités d'or",
|
||||||
|
},
|
||||||
|
'11': {
|
||||||
|
choice_id: 11,
|
||||||
|
},
|
||||||
|
'12': {
|
||||||
|
choice_id: 12,
|
||||||
|
},
|
||||||
|
'13': {
|
||||||
|
choice_id: 13,
|
||||||
|
},
|
||||||
|
'14': {
|
||||||
|
choice_id: 14,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 7,
|
||||||
|
pseudo: 'Nikolas Edison',
|
||||||
|
creation_date: {
|
||||||
|
date: '2020-01-30 12:25:13.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
votes: {
|
||||||
|
'8': {
|
||||||
|
choice_id: 8,
|
||||||
|
},
|
||||||
|
'9': {
|
||||||
|
choice_id: 9,
|
||||||
|
},
|
||||||
|
'10': {
|
||||||
|
id: 7,
|
||||||
|
vote_id: 13,
|
||||||
|
value: 'maybe',
|
||||||
|
choice_id: 10,
|
||||||
|
text: "Les mystérieuses cités d'or",
|
||||||
|
},
|
||||||
|
'11': {
|
||||||
|
choice_id: 11,
|
||||||
|
},
|
||||||
|
'12': {
|
||||||
|
id: 7,
|
||||||
|
vote_id: 14,
|
||||||
|
value: 'maybe',
|
||||||
|
choice_id: 12,
|
||||||
|
text: 'Foot 2 rue',
|
||||||
|
},
|
||||||
|
'13': {
|
||||||
|
choice_id: 13,
|
||||||
|
},
|
||||||
|
'14': {
|
||||||
|
choice_id: 14,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 8,
|
||||||
|
pseudo: 'Wulfila',
|
||||||
|
creation_date: {
|
||||||
|
date: '2020-01-30 12:25:13.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
votes: {
|
||||||
|
'8': {
|
||||||
|
choice_id: 8,
|
||||||
|
},
|
||||||
|
'9': {
|
||||||
|
choice_id: 9,
|
||||||
|
},
|
||||||
|
'10': {
|
||||||
|
choice_id: 10,
|
||||||
|
},
|
||||||
|
'11': {
|
||||||
|
id: 8,
|
||||||
|
vote_id: 15,
|
||||||
|
value: 'maybe',
|
||||||
|
choice_id: 11,
|
||||||
|
text: 'Les mondes engloutis',
|
||||||
|
},
|
||||||
|
'12': {
|
||||||
|
choice_id: 12,
|
||||||
|
},
|
||||||
|
'13': {
|
||||||
|
id: 8,
|
||||||
|
vote_id: 16,
|
||||||
|
value: 'yes',
|
||||||
|
choice_id: 13,
|
||||||
|
text: "Le chat, la vache, et l'océan",
|
||||||
|
},
|
||||||
|
'14': {
|
||||||
|
choice_id: 14,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 9,
|
||||||
|
pseudo: 'Billie Jean',
|
||||||
|
creation_date: {
|
||||||
|
date: '2020-01-30 12:25:13.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
votes: {
|
||||||
|
'8': {
|
||||||
|
choice_id: 8,
|
||||||
|
},
|
||||||
|
'9': {
|
||||||
|
id: 9,
|
||||||
|
vote_id: 17,
|
||||||
|
value: 'yes',
|
||||||
|
choice_id: 9,
|
||||||
|
text: 'Boumbo petite automobile',
|
||||||
|
},
|
||||||
|
'10': {
|
||||||
|
choice_id: 10,
|
||||||
|
},
|
||||||
|
'11': {
|
||||||
|
id: 9,
|
||||||
|
vote_id: 18,
|
||||||
|
value: 'yes',
|
||||||
|
choice_id: 11,
|
||||||
|
text: 'Les mondes engloutis',
|
||||||
|
},
|
||||||
|
'12': {
|
||||||
|
choice_id: 12,
|
||||||
|
},
|
||||||
|
'13': {
|
||||||
|
choice_id: 13,
|
||||||
|
},
|
||||||
|
'14': {
|
||||||
|
choice_id: 14,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
choices_count: {
|
||||||
|
counts: {
|
||||||
|
'10': {
|
||||||
|
choice_id: 10,
|
||||||
|
choice_text: "Les mystérieuses cités d'or",
|
||||||
|
id: 4,
|
||||||
|
score: 2.5,
|
||||||
|
yes: {
|
||||||
|
count: 2,
|
||||||
|
people: ['voting_people_TEST', 'voting_people_TEST'],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 1,
|
||||||
|
people: ['Nikolas Edison'],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 1,
|
||||||
|
people: ['voting_people_TEST'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'9': {
|
||||||
|
choice_id: 9,
|
||||||
|
choice_text: 'Boumbo petite automobile',
|
||||||
|
id: 5,
|
||||||
|
score: 2.5,
|
||||||
|
yes: {
|
||||||
|
count: 2,
|
||||||
|
people: ['voting_people_TEST', 'Billie Jean'],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 1,
|
||||||
|
people: ['voting_people_TEST'],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'12': {
|
||||||
|
choice_id: 12,
|
||||||
|
choice_text: 'Foot 2 rue',
|
||||||
|
id: 14,
|
||||||
|
score: 0.5,
|
||||||
|
yes: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 1,
|
||||||
|
people: ['Nikolas Edison'],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'11': {
|
||||||
|
choice_id: 11,
|
||||||
|
choice_text: 'Les mondes engloutis',
|
||||||
|
id: 15,
|
||||||
|
score: 1.5,
|
||||||
|
yes: {
|
||||||
|
count: 1,
|
||||||
|
people: ['Billie Jean'],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 1,
|
||||||
|
people: ['Wulfila'],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'13': {
|
||||||
|
choice_id: 13,
|
||||||
|
choice_text: "Le chat, la vache, et l'océan",
|
||||||
|
id: 16,
|
||||||
|
score: 1,
|
||||||
|
yes: {
|
||||||
|
count: 1,
|
||||||
|
people: ['Wulfila'],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
maxScore: 2.5,
|
||||||
|
},
|
||||||
|
choices: [
|
||||||
|
{
|
||||||
|
id: 8,
|
||||||
|
date: {
|
||||||
|
date: '2020-01-30 12:25:13.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
text: 'Vic le viking',
|
||||||
|
url: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 9,
|
||||||
|
date: {
|
||||||
|
date: '2020-01-30 12:25:13.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
text: 'Boumbo petite automobile',
|
||||||
|
url: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 10,
|
||||||
|
date: {
|
||||||
|
date: '2020-01-30 12:25:13.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
text: "Les mystérieuses cités d'or",
|
||||||
|
url: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 11,
|
||||||
|
date: {
|
||||||
|
date: '2020-01-30 12:25:13.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
text: 'Les mondes engloutis',
|
||||||
|
url: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 12,
|
||||||
|
date: {
|
||||||
|
date: '2020-01-30 12:25:13.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
text: 'Foot 2 rue',
|
||||||
|
url: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 13,
|
||||||
|
date: {
|
||||||
|
date: '2020-01-30 12:25:13.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
text: "Le chat, la vache, et l'océan",
|
||||||
|
url: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 14,
|
||||||
|
date: {
|
||||||
|
date: '2020-01-30 12:25:13.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
text: 'Digimon',
|
||||||
|
url: null,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
comments: [
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
text: 'allez boumbo!',
|
||||||
|
pseudo: 'tk_TEST_commentateur',
|
||||||
|
date: {
|
||||||
|
date: '2020-01-30 12:25:13.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
text: 'je suis pour la team rocket de digimon',
|
||||||
|
pseudo: 'tk_TEST',
|
||||||
|
date: {
|
||||||
|
date: '2020-01-30 12:25:13.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
comments_count: 2,
|
||||||
|
};
|
658
mocks/old-stuff/mocks/mock-success-vote.ts
Normal file
658
mocks/old-stuff/mocks/mock-success-vote.ts
Normal file
@ -0,0 +1,658 @@
|
|||||||
|
export const mockSuccessVote = {
|
||||||
|
message: 'you created a vote stack from an existing owner : tktest@tktest.com',
|
||||||
|
poll: {
|
||||||
|
id: 4,
|
||||||
|
title: 'dessin animé préféré',
|
||||||
|
customUrl: null,
|
||||||
|
description: 'choisissez votre animé préféré',
|
||||||
|
creationDate: {
|
||||||
|
date: '2020-02-04 12:35:37.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
expiracyDate: {
|
||||||
|
date: '2020-02-04 12:35:37.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
owner: {
|
||||||
|
__initializer__: null,
|
||||||
|
__cloner__: null,
|
||||||
|
__isInitialized__: true,
|
||||||
|
pseudo: 'tk_TEST',
|
||||||
|
email: 'tktest@tktest.com',
|
||||||
|
},
|
||||||
|
kind: 'text',
|
||||||
|
allowedAnswers: ['yes'],
|
||||||
|
modificationPolicy: 'everybody',
|
||||||
|
mailOnComment: null,
|
||||||
|
mailOnVote: null,
|
||||||
|
hideResults: null,
|
||||||
|
showResultEvenIfPasswords: null,
|
||||||
|
votes: {},
|
||||||
|
stacksOfVotes: {},
|
||||||
|
choices: {},
|
||||||
|
comments: {},
|
||||||
|
defaultExpiracyDaysFromNow: 60,
|
||||||
|
},
|
||||||
|
vote_stack: {
|
||||||
|
id: 10,
|
||||||
|
modifier_token:
|
||||||
|
'V46C6b58c456B39kTI19KSfp1y8Zz7Wyg500xMdjNB823st221Gb509VX1AOsnhV93fhol1f8P30OblKFoI76u54T94rH92x5c95TdW1W2eH0hb55q8',
|
||||||
|
pseudo: 'tk_TEST',
|
||||||
|
creation_date: {
|
||||||
|
date: '2020-02-04 12:36:07.530846',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
votes: {
|
||||||
|
'8': {
|
||||||
|
id: 22,
|
||||||
|
value: 'yes',
|
||||||
|
choice_id: 8,
|
||||||
|
text: 'Vic le viking',
|
||||||
|
stack_id: 10,
|
||||||
|
},
|
||||||
|
'9': {
|
||||||
|
choice_id: 9,
|
||||||
|
},
|
||||||
|
'10': {
|
||||||
|
choice_id: 10,
|
||||||
|
},
|
||||||
|
'11': {
|
||||||
|
choice_id: 11,
|
||||||
|
},
|
||||||
|
'12': {
|
||||||
|
choice_id: 12,
|
||||||
|
},
|
||||||
|
'13': {
|
||||||
|
choice_id: 13,
|
||||||
|
},
|
||||||
|
'14': {
|
||||||
|
choice_id: 14,
|
||||||
|
},
|
||||||
|
'5': {
|
||||||
|
id: 19,
|
||||||
|
value: 'yes',
|
||||||
|
choice_id: 5,
|
||||||
|
text: '2020-02-04 12:35:37',
|
||||||
|
stack_id: 10,
|
||||||
|
},
|
||||||
|
'6': {
|
||||||
|
id: 20,
|
||||||
|
value: 'yes',
|
||||||
|
choice_id: 6,
|
||||||
|
text: '2020-02-04 12:35:37',
|
||||||
|
stack_id: 10,
|
||||||
|
},
|
||||||
|
'7': {
|
||||||
|
id: 21,
|
||||||
|
value: 'yes',
|
||||||
|
choice_id: 7,
|
||||||
|
text: '2020-02-04 12:35:37',
|
||||||
|
stack_id: 10,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
stacks: [
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
modifier_token: '5e39570956e5d',
|
||||||
|
pseudo: 'voting_people_TEST',
|
||||||
|
creation_date: {
|
||||||
|
date: '2020-02-04 12:35:37.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
votes: {
|
||||||
|
'8': {
|
||||||
|
choice_id: 8,
|
||||||
|
},
|
||||||
|
'9': {
|
||||||
|
id: 5,
|
||||||
|
value: 'maybe',
|
||||||
|
choice_id: 9,
|
||||||
|
text: 'Boumbo petite automobile',
|
||||||
|
stack_id: 3,
|
||||||
|
},
|
||||||
|
'10': {
|
||||||
|
id: 4,
|
||||||
|
value: 'yes',
|
||||||
|
choice_id: 10,
|
||||||
|
text: "Les mystérieuses cités d'or",
|
||||||
|
stack_id: 3,
|
||||||
|
},
|
||||||
|
'11': {
|
||||||
|
choice_id: 11,
|
||||||
|
},
|
||||||
|
'12': {
|
||||||
|
choice_id: 12,
|
||||||
|
},
|
||||||
|
'13': {
|
||||||
|
choice_id: 13,
|
||||||
|
},
|
||||||
|
'14': {
|
||||||
|
choice_id: 14,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
modifier_token: '5e39570956e5d',
|
||||||
|
pseudo: 'voting_people_TEST',
|
||||||
|
creation_date: {
|
||||||
|
date: '2020-02-04 12:35:37.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
votes: {
|
||||||
|
'8': {
|
||||||
|
choice_id: 8,
|
||||||
|
},
|
||||||
|
'9': {
|
||||||
|
id: 6,
|
||||||
|
value: 'yes',
|
||||||
|
choice_id: 9,
|
||||||
|
text: 'Boumbo petite automobile',
|
||||||
|
stack_id: 4,
|
||||||
|
},
|
||||||
|
'10': {
|
||||||
|
id: 8,
|
||||||
|
value: 'no',
|
||||||
|
choice_id: 10,
|
||||||
|
text: "Les mystérieuses cités d'or",
|
||||||
|
stack_id: 4,
|
||||||
|
},
|
||||||
|
'11': {
|
||||||
|
choice_id: 11,
|
||||||
|
},
|
||||||
|
'12': {
|
||||||
|
choice_id: 12,
|
||||||
|
},
|
||||||
|
'13': {
|
||||||
|
choice_id: 13,
|
||||||
|
},
|
||||||
|
'14': {
|
||||||
|
choice_id: 14,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 7,
|
||||||
|
modifier_token: '5e3957095ca23',
|
||||||
|
pseudo: 'Nikolas Edison',
|
||||||
|
creation_date: {
|
||||||
|
date: '2020-02-04 12:35:37.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
votes: {
|
||||||
|
'8': {
|
||||||
|
choice_id: 8,
|
||||||
|
},
|
||||||
|
'9': {
|
||||||
|
choice_id: 9,
|
||||||
|
},
|
||||||
|
'10': {
|
||||||
|
id: 13,
|
||||||
|
value: 'maybe',
|
||||||
|
choice_id: 10,
|
||||||
|
text: "Les mystérieuses cités d'or",
|
||||||
|
stack_id: 7,
|
||||||
|
},
|
||||||
|
'11': {
|
||||||
|
choice_id: 11,
|
||||||
|
},
|
||||||
|
'12': {
|
||||||
|
id: 14,
|
||||||
|
value: 'maybe',
|
||||||
|
choice_id: 12,
|
||||||
|
text: 'Foot 2 rue',
|
||||||
|
stack_id: 7,
|
||||||
|
},
|
||||||
|
'13': {
|
||||||
|
choice_id: 13,
|
||||||
|
},
|
||||||
|
'14': {
|
||||||
|
choice_id: 14,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 8,
|
||||||
|
modifier_token: '5e3957095ca2d',
|
||||||
|
pseudo: 'Wulfila',
|
||||||
|
creation_date: {
|
||||||
|
date: '2020-02-04 12:35:37.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
votes: {
|
||||||
|
'8': {
|
||||||
|
choice_id: 8,
|
||||||
|
},
|
||||||
|
'9': {
|
||||||
|
choice_id: 9,
|
||||||
|
},
|
||||||
|
'10': {
|
||||||
|
choice_id: 10,
|
||||||
|
},
|
||||||
|
'11': {
|
||||||
|
id: 15,
|
||||||
|
value: 'maybe',
|
||||||
|
choice_id: 11,
|
||||||
|
text: 'Les mondes engloutis',
|
||||||
|
stack_id: 8,
|
||||||
|
},
|
||||||
|
'12': {
|
||||||
|
choice_id: 12,
|
||||||
|
},
|
||||||
|
'13': {
|
||||||
|
id: 16,
|
||||||
|
value: 'yes',
|
||||||
|
choice_id: 13,
|
||||||
|
text: "Le chat, la vache, et l'océan",
|
||||||
|
stack_id: 8,
|
||||||
|
},
|
||||||
|
'14': {
|
||||||
|
choice_id: 14,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 9,
|
||||||
|
modifier_token: '5e3957095ca34',
|
||||||
|
pseudo: 'Billie Jean',
|
||||||
|
creation_date: {
|
||||||
|
date: '2020-02-04 12:35:37.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
votes: {
|
||||||
|
'8': {
|
||||||
|
choice_id: 8,
|
||||||
|
},
|
||||||
|
'9': {
|
||||||
|
id: 17,
|
||||||
|
value: 'yes',
|
||||||
|
choice_id: 9,
|
||||||
|
text: 'Boumbo petite automobile',
|
||||||
|
stack_id: 9,
|
||||||
|
},
|
||||||
|
'10': {
|
||||||
|
choice_id: 10,
|
||||||
|
},
|
||||||
|
'11': {
|
||||||
|
id: 18,
|
||||||
|
value: 'yes',
|
||||||
|
choice_id: 11,
|
||||||
|
text: 'Les mondes engloutis',
|
||||||
|
stack_id: 9,
|
||||||
|
},
|
||||||
|
'12': {
|
||||||
|
choice_id: 12,
|
||||||
|
},
|
||||||
|
'13': {
|
||||||
|
choice_id: 13,
|
||||||
|
},
|
||||||
|
'14': {
|
||||||
|
choice_id: 14,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 10,
|
||||||
|
modifier_token:
|
||||||
|
'V46C6b58c456B39kTI19KSfp1y8Zz7Wyg500xMdjNB823st221Gb509VX1AOsnhV93fhol1f8P30OblKFoI76u54T94rH92x5c95TdW1W2eH0hb55q8',
|
||||||
|
pseudo: 'tk_TEST',
|
||||||
|
creation_date: {
|
||||||
|
date: '2020-02-04 12:36:07.530846',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
votes: {
|
||||||
|
'8': {
|
||||||
|
id: 22,
|
||||||
|
value: 'yes',
|
||||||
|
choice_id: 8,
|
||||||
|
text: 'Vic le viking',
|
||||||
|
stack_id: 10,
|
||||||
|
},
|
||||||
|
'9': {
|
||||||
|
choice_id: 9,
|
||||||
|
},
|
||||||
|
'10': {
|
||||||
|
choice_id: 10,
|
||||||
|
},
|
||||||
|
'11': {
|
||||||
|
choice_id: 11,
|
||||||
|
},
|
||||||
|
'12': {
|
||||||
|
choice_id: 12,
|
||||||
|
},
|
||||||
|
'13': {
|
||||||
|
choice_id: 13,
|
||||||
|
},
|
||||||
|
'14': {
|
||||||
|
choice_id: 14,
|
||||||
|
},
|
||||||
|
'5': {
|
||||||
|
id: 19,
|
||||||
|
value: 'yes',
|
||||||
|
choice_id: 5,
|
||||||
|
text: '2020-02-04 12:35:37',
|
||||||
|
stack_id: 10,
|
||||||
|
},
|
||||||
|
'6': {
|
||||||
|
id: 20,
|
||||||
|
value: 'yes',
|
||||||
|
choice_id: 6,
|
||||||
|
text: '2020-02-04 12:35:37',
|
||||||
|
stack_id: 10,
|
||||||
|
},
|
||||||
|
'7': {
|
||||||
|
id: 21,
|
||||||
|
value: 'yes',
|
||||||
|
choice_id: 7,
|
||||||
|
text: '2020-02-04 12:35:37',
|
||||||
|
stack_id: 10,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
comments: [
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
text: 'allez boumbo!',
|
||||||
|
pseudo: 'tk_TEST_commentateur',
|
||||||
|
date: {
|
||||||
|
date: '2020-02-04 12:35:37.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
text: 'je suis pour la team rocket de digimon',
|
||||||
|
pseudo: 'tk_TEST',
|
||||||
|
date: {
|
||||||
|
date: '2020-02-04 12:35:37.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
choices: [
|
||||||
|
{
|
||||||
|
id: 8,
|
||||||
|
date: {
|
||||||
|
date: '2020-02-04 12:35:37.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
text: 'Vic le viking',
|
||||||
|
url: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 9,
|
||||||
|
date: {
|
||||||
|
date: '2020-02-04 12:35:37.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
text: 'Boumbo petite automobile',
|
||||||
|
url: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 10,
|
||||||
|
date: {
|
||||||
|
date: '2020-02-04 12:35:37.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
text: "Les mystérieuses cités d'or",
|
||||||
|
url: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 11,
|
||||||
|
date: {
|
||||||
|
date: '2020-02-04 12:35:37.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
text: 'Les mondes engloutis',
|
||||||
|
url: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 12,
|
||||||
|
date: {
|
||||||
|
date: '2020-02-04 12:35:37.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
text: 'Foot 2 rue',
|
||||||
|
url: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 13,
|
||||||
|
date: {
|
||||||
|
date: '2020-02-04 12:35:37.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
text: "Le chat, la vache, et l'océan",
|
||||||
|
url: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 14,
|
||||||
|
date: {
|
||||||
|
date: '2020-02-04 12:35:37.000000',
|
||||||
|
timezone_type: 3,
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
},
|
||||||
|
text: 'Digimon',
|
||||||
|
url: null,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
choices_count: {
|
||||||
|
counts: {
|
||||||
|
'10': {
|
||||||
|
choice_id: 10,
|
||||||
|
choice_text: "Les mystérieuses cités d'or",
|
||||||
|
id: 4,
|
||||||
|
score: 2.5,
|
||||||
|
yes: {
|
||||||
|
count: 2,
|
||||||
|
people: ['voting_people_TEST', 'voting_people_TEST'],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 1,
|
||||||
|
people: ['Nikolas Edison'],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 1,
|
||||||
|
people: ['voting_people_TEST'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'9': {
|
||||||
|
choice_id: 9,
|
||||||
|
choice_text: 'Boumbo petite automobile',
|
||||||
|
id: 5,
|
||||||
|
score: 2.5,
|
||||||
|
yes: {
|
||||||
|
count: 2,
|
||||||
|
people: ['voting_people_TEST', 'Billie Jean'],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 1,
|
||||||
|
people: ['voting_people_TEST'],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'12': {
|
||||||
|
choice_id: 12,
|
||||||
|
choice_text: 'Foot 2 rue',
|
||||||
|
id: 14,
|
||||||
|
score: 0.5,
|
||||||
|
yes: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 1,
|
||||||
|
people: ['Nikolas Edison'],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'11': {
|
||||||
|
choice_id: 11,
|
||||||
|
choice_text: 'Les mondes engloutis',
|
||||||
|
id: 15,
|
||||||
|
score: 1.5,
|
||||||
|
yes: {
|
||||||
|
count: 1,
|
||||||
|
people: ['Billie Jean'],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 1,
|
||||||
|
people: ['Wulfila'],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'13': {
|
||||||
|
choice_id: 13,
|
||||||
|
choice_text: "Le chat, la vache, et l'océan",
|
||||||
|
id: 16,
|
||||||
|
score: 1,
|
||||||
|
yes: {
|
||||||
|
count: 1,
|
||||||
|
people: ['Wulfila'],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'5': {
|
||||||
|
choice_id: 5,
|
||||||
|
choice_text: '2020-02-04 12:35:37',
|
||||||
|
id: 19,
|
||||||
|
score: 1,
|
||||||
|
yes: {
|
||||||
|
count: 1,
|
||||||
|
people: ['tk_TEST'],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'6': {
|
||||||
|
choice_id: 6,
|
||||||
|
choice_text: '2020-02-04 12:35:37',
|
||||||
|
id: 20,
|
||||||
|
score: 1,
|
||||||
|
yes: {
|
||||||
|
count: 1,
|
||||||
|
people: ['tk_TEST'],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'7': {
|
||||||
|
choice_id: 7,
|
||||||
|
choice_text: '2020-02-04 12:35:37',
|
||||||
|
id: 21,
|
||||||
|
score: 1,
|
||||||
|
yes: {
|
||||||
|
count: 1,
|
||||||
|
people: ['tk_TEST'],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'8': {
|
||||||
|
choice_id: 8,
|
||||||
|
choice_text: 'Vic le viking',
|
||||||
|
id: 22,
|
||||||
|
score: 1,
|
||||||
|
yes: {
|
||||||
|
count: 1,
|
||||||
|
people: ['tk_TEST'],
|
||||||
|
},
|
||||||
|
maybe: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
no: {
|
||||||
|
count: 0,
|
||||||
|
people: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
maxScore: 2.5,
|
||||||
|
},
|
||||||
|
vote_count: 6,
|
||||||
|
owner: {
|
||||||
|
__initializer__: null,
|
||||||
|
__cloner__: null,
|
||||||
|
__isInitialized__: true,
|
||||||
|
pseudo: 'tk_TEST',
|
||||||
|
email: 'tktest@tktest.com',
|
||||||
|
},
|
||||||
|
owner_modifier_token:
|
||||||
|
'V46C6b58c456B39kTI19KSfp1y8Zz7Wyg500xMdjNB823st221Gb509VX1AOsnhV93fhol1f8P30OblKFoI76u54T94rH92x5c95TdW1W2eH0hb55q8',
|
||||||
|
admin_key:
|
||||||
|
'9uE27daM8dG1P9z74B89z299W0JF0ne15eER37g2v3d86mk123318v516UUbey4z3C87Wbo65V3c7cHsBTELvhl8b82d61WBMR2U66USNc7idS8810f',
|
||||||
|
json_you_sent: {
|
||||||
|
pseudo: 'mon pseudo',
|
||||||
|
email: 'tktest@tktest.com',
|
||||||
|
votes: [
|
||||||
|
{
|
||||||
|
choice_id: 5,
|
||||||
|
value: 'yes',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
choice_id: 6,
|
||||||
|
value: 'yes',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
choice_id: 7,
|
||||||
|
value: 'yes',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
choice_id: 8,
|
||||||
|
value: 'yes',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
44
mocks/old-stuff/mocks/mockmypolls.ts
Normal file
44
mocks/old-stuff/mocks/mockmypolls.ts
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
export const mockMyPolls = [
|
||||||
|
{
|
||||||
|
id: 1000001,
|
||||||
|
title: 'blehehehe heh hehhe e test1',
|
||||||
|
customUrl: null,
|
||||||
|
description: 'maaaaaaaaaaah',
|
||||||
|
creationDate: { date: '2020-01-20 14:21:16.270157', timezone_type: 3, timezone: 'Europe/Paris' },
|
||||||
|
expiracyDate: { date: '2020-01-20 14:21:16.270178', timezone_type: 3, timezone: 'Europe/Paris' },
|
||||||
|
owner: null,
|
||||||
|
kind: 'text',
|
||||||
|
allowedAnswers: ['yes'],
|
||||||
|
modificationPolicy: 'nobody',
|
||||||
|
mailOnComment: null,
|
||||||
|
mailOnVote: null,
|
||||||
|
hideResults: null,
|
||||||
|
showResultEvenIfPasswords: null,
|
||||||
|
votes: {},
|
||||||
|
stacksOfVotes: {},
|
||||||
|
choices: {},
|
||||||
|
comments: {},
|
||||||
|
defaultExpiracyDaysFromNow: 60,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 1000002,
|
||||||
|
title: 'bleh z zr erth tuyjikioy yylil test2',
|
||||||
|
customUrl: null,
|
||||||
|
description: 'maaaaaaaaaaah 2',
|
||||||
|
creationDate: { date: '2020-01-20 14:21:16.270157', timezone_type: 3, timezone: 'Europe/Paris' },
|
||||||
|
expiracyDate: { date: '2020-01-20 14:21:16.270178', timezone_type: 3, timezone: 'Europe/Paris' },
|
||||||
|
owner: null,
|
||||||
|
kind: 'text',
|
||||||
|
allowedAnswers: ['yes'],
|
||||||
|
modificationPolicy: 'nobody',
|
||||||
|
mailOnComment: null,
|
||||||
|
mailOnVote: null,
|
||||||
|
hideResults: null,
|
||||||
|
showResultEvenIfPasswords: null,
|
||||||
|
votes: {},
|
||||||
|
stacksOfVotes: {},
|
||||||
|
choices: {},
|
||||||
|
comments: {},
|
||||||
|
defaultExpiracyDaysFromNow: 60,
|
||||||
|
},
|
||||||
|
];
|
43
mocks/old-stuff/mocks/votestack-success.json
Normal file
43
mocks/old-stuff/mocks/votestack-success.json
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"message": "you created a vote stack from an existing owner : testing_vote_people@tktest.com",
|
||||||
|
"vote_stack": {
|
||||||
|
"30": {
|
||||||
|
"id": 30,
|
||||||
|
"value": "no",
|
||||||
|
"choice_id": 5,
|
||||||
|
"text": "Vic le viking"
|
||||||
|
},
|
||||||
|
"31": {
|
||||||
|
"id": 31,
|
||||||
|
"value": "maybe",
|
||||||
|
"choice_id": 6,
|
||||||
|
"text": "Boumbo petite automobile"
|
||||||
|
},
|
||||||
|
"32": {
|
||||||
|
"id": 32,
|
||||||
|
"value": "yes",
|
||||||
|
"choice_id": 7,
|
||||||
|
"text": "Les mystérieuses cités d'or"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"vote_count": 10,
|
||||||
|
"owner_modifier_token": "rc7fgzdb6D8bUdgwl7H065eYMMeqOcL31JrS11MpRs08az8ed43aZLKsFd81cr50uq23D9b1w068E57U39omaBcygfebm7m252YI430b332UZ4tkC76",
|
||||||
|
"json_you_sent": {
|
||||||
|
"pseudo": "tktest",
|
||||||
|
"email": "testing_vote_people@tktest.com",
|
||||||
|
"votes": [
|
||||||
|
{
|
||||||
|
"choice_id": 5,
|
||||||
|
"value": "no"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"choice_id": 6,
|
||||||
|
"value": "maybe"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"choice_id": 7,
|
||||||
|
"value": "yes"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
45
mocks/old-stuff/old-stuff-routing.module.ts
Normal file
45
mocks/old-stuff/old-stuff-routing.module.ts
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { RouterModule, Routes } from '@angular/router';
|
||||||
|
|
||||||
|
import { AdminComponent } from './pages/admin/admin.component';
|
||||||
|
import { AnswersComponent } from './pages/answers/answers.component';
|
||||||
|
import { CreateOrRetrieveComponent } from './pages/create-or-retrieve/create-or-retrieve.component';
|
||||||
|
import { DatesComponent } from './pages/dates/dates.component';
|
||||||
|
import { EndConfirmationComponent } from './pages/end-confirmation/end-confirmation.component';
|
||||||
|
import { KindComponent } from './pages/example/kind/kind.component';
|
||||||
|
import { PicturesComponent } from './pages/example/pictures/pictures.component';
|
||||||
|
import { HomeComponent } from './pages/home/home.component';
|
||||||
|
import { PasswordComponent } from './pages/password/password.component';
|
||||||
|
import { PollDisplayComponent } from './pages/poll/poll-display/poll-display.component';
|
||||||
|
import { PollGraphicComponent } from './pages/poll/poll-graphic/poll-graphic.component';
|
||||||
|
import { ResumeComponent } from './pages/resume/resume.component';
|
||||||
|
import { VisibilityComponent } from './pages/visibility/visibility.component';
|
||||||
|
import { VotingChoiceComponent } from './pages/voting/voting-choice/voting-choice.component';
|
||||||
|
import { VotingComponent } from './pages/voting/voting.component';
|
||||||
|
|
||||||
|
const routes: Routes = [
|
||||||
|
{ path: '', redirectTo: 'step/home', pathMatch: 'full' },
|
||||||
|
{ path: 'admin/:token', component: AdminComponent }, // http://localhost:4200/admin/srfdgedsTGETHRYJtujTUjTUkTIUKTK
|
||||||
|
{ path: 'step/home', component: HomeComponent },
|
||||||
|
{ path: 'step/creation', component: CreateOrRetrieveComponent },
|
||||||
|
{ path: 'step/date', component: DatesComponent },
|
||||||
|
{ path: 'step/kind', component: KindComponent },
|
||||||
|
{ path: 'step/answers', component: AnswersComponent },
|
||||||
|
{ path: 'step/admin', component: AdminComponent },
|
||||||
|
{ path: 'step/pictures', component: PicturesComponent },
|
||||||
|
{ path: 'step/visibility', component: VisibilityComponent },
|
||||||
|
{ path: 'step/password', component: PasswordComponent },
|
||||||
|
{ path: 'step/resume', component: ResumeComponent },
|
||||||
|
{ path: 'step/end', component: EndConfirmationComponent },
|
||||||
|
{ path: 'graphic/:poll', component: PollGraphicComponent },
|
||||||
|
{ path: 'vote/poll/id/:id', component: PollDisplayComponent },
|
||||||
|
{ path: 'vote/poll/custom_url/:custom_url', component: PollDisplayComponent },
|
||||||
|
{ path: 'votingchoice', component: VotingChoiceComponent },
|
||||||
|
{ path: 'voting', component: VotingComponent },
|
||||||
|
];
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [RouterModule.forChild(routes)],
|
||||||
|
exports: [RouterModule],
|
||||||
|
})
|
||||||
|
export class OldStuffRoutingModule {}
|
78
mocks/old-stuff/old-stuff.module.ts
Normal file
78
mocks/old-stuff/old-stuff.module.ts
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
import { CommonModule } from '@angular/common';
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
import { ConfirmationService, DialogModule, MessageService } from 'primeng';
|
||||||
|
|
||||||
|
import { SharedModule } from '../../src/app/shared/shared.module';
|
||||||
|
import { DateValueAccessorModule } from './custom-lib/date-value-accessor';
|
||||||
|
import { OldStuffRoutingModule } from './old-stuff-routing.module';
|
||||||
|
import { AdminComponent } from './pages/admin/admin.component';
|
||||||
|
import { AnswersComponent } from './pages/answers/answers.component';
|
||||||
|
import { CreateOrRetrieveComponent } from './pages/create-or-retrieve/create-or-retrieve.component';
|
||||||
|
import { DatesComponent } from './pages/dates/dates.component';
|
||||||
|
import { EndConfirmationComponent } from './pages/end-confirmation/end-confirmation.component';
|
||||||
|
import { BaseComponent } from './pages/example/base-page/base.component';
|
||||||
|
import { KindComponent } from './pages/example/kind/kind.component';
|
||||||
|
import { PicturesComponent } from './pages/example/pictures/pictures.component';
|
||||||
|
import { HomeComponent } from './pages/home/home.component';
|
||||||
|
import { PasswordComponent } from './pages/password/password.component';
|
||||||
|
import { PollDisplayComponent } from './pages/poll/poll-display/poll-display.component';
|
||||||
|
import { PollGraphicComponent } from './pages/poll/poll-graphic/poll-graphic.component';
|
||||||
|
import { ResumeComponent } from './pages/resume/resume.component';
|
||||||
|
import { VisibilityComponent } from './pages/visibility/visibility.component';
|
||||||
|
import { ChoicesListComponent } from './pages/voting/choices-list/choices-list.component';
|
||||||
|
import { CommentsListComponent } from './pages/voting/comments-list/comments-list.component';
|
||||||
|
import { VotingChoiceComponent } from './pages/voting/voting-choice/voting-choice.component';
|
||||||
|
import { VotingCommentComponent } from './pages/voting/voting-comment/voting-comment.component';
|
||||||
|
import { VotingGraphComponent } from './pages/voting/voting-graph/voting-graph.component';
|
||||||
|
import { VotingNavigationComponent } from './pages/voting/voting-navigation/voting-navigation.component';
|
||||||
|
import { VotingSummaryComponent } from './pages/voting/voting-summary/voting-summary.component';
|
||||||
|
import { VotingComponent } from './pages/voting/voting.component';
|
||||||
|
import { ConfigService } from './services/config.service';
|
||||||
|
import { CopyTextComponent } from './ui/copy-text/copy-text.component';
|
||||||
|
import { ResettableInputDirective } from './ui/directives/resettable-input.directive';
|
||||||
|
import { ErasableInputComponent } from './ui/erasable-input/erasable-input.component';
|
||||||
|
import { TwoLinksComponent } from './ui/two-links/two-links.component';
|
||||||
|
|
||||||
|
const PRIMENG_MODULES = [DialogModule];
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
declarations: [
|
||||||
|
AdminComponent,
|
||||||
|
AnswersComponent,
|
||||||
|
BaseComponent,
|
||||||
|
ChoicesListComponent,
|
||||||
|
CommentsListComponent,
|
||||||
|
CopyTextComponent,
|
||||||
|
CreateOrRetrieveComponent,
|
||||||
|
DatesComponent,
|
||||||
|
EndConfirmationComponent,
|
||||||
|
ErasableInputComponent,
|
||||||
|
HomeComponent,
|
||||||
|
KindComponent,
|
||||||
|
PasswordComponent,
|
||||||
|
PicturesComponent,
|
||||||
|
PollDisplayComponent,
|
||||||
|
PollGraphicComponent,
|
||||||
|
ResettableInputDirective,
|
||||||
|
ResumeComponent,
|
||||||
|
TwoLinksComponent,
|
||||||
|
VisibilityComponent,
|
||||||
|
VotingChoiceComponent,
|
||||||
|
VotingGraphComponent,
|
||||||
|
VotingComponent,
|
||||||
|
VotingCommentComponent,
|
||||||
|
VotingSummaryComponent,
|
||||||
|
VotingNavigationComponent,
|
||||||
|
],
|
||||||
|
imports: [
|
||||||
|
...PRIMENG_MODULES,
|
||||||
|
CommonModule,
|
||||||
|
OldStuffRoutingModule,
|
||||||
|
SharedModule,
|
||||||
|
TranslateModule.forChild({ extend: true }),
|
||||||
|
DateValueAccessorModule,
|
||||||
|
],
|
||||||
|
providers: [ConfigService, ConfirmationService, MessageService],
|
||||||
|
})
|
||||||
|
export class OldStuffModule {}
|
10
mocks/old-stuff/pages/admin/admin.component.html
Normal file
10
mocks/old-stuff/pages/admin/admin.component.html
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<div>
|
||||||
|
<h1>
|
||||||
|
admin page to modify a poll
|
||||||
|
</h1>
|
||||||
|
<div class="well">
|
||||||
|
<h2>Anybody with this link can modify and delete the poll</h2>
|
||||||
|
<strong> token: {{ tokenForAdministration }} </strong>
|
||||||
|
coming soon
|
||||||
|
</div>
|
||||||
|
</div>
|
41
mocks/old-stuff/pages/admin/admin.component.scss
Normal file
41
mocks/old-stuff/pages/admin/admin.component.scss
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
form {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 340px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
.row {
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
padding-bottom: 65px;
|
||||||
|
}
|
||||||
|
textarea {
|
||||||
|
height: 115px;
|
||||||
|
margin-bottom: 50px;
|
||||||
|
}
|
||||||
|
label {
|
||||||
|
padding-bottom: 10px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
h2,
|
||||||
|
h1 {
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
margin-top: 40px;
|
||||||
|
padding-left: 16px;
|
||||||
|
}
|
||||||
|
.btn--alert {
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
padding-left: 28px;
|
||||||
|
padding-bottom: 15px;
|
||||||
|
}
|
||||||
|
select,
|
||||||
|
input[type='date'] {
|
||||||
|
max-width: 130px;
|
||||||
|
}
|
||||||
|
.btn--outline {
|
||||||
|
margin-bottom: 70px;
|
||||||
|
}
|
24
mocks/old-stuff/pages/admin/admin.component.spec.ts
Normal file
24
mocks/old-stuff/pages/admin/admin.component.spec.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { AdminComponent } from './admin.component';
|
||||||
|
|
||||||
|
fdescribe('AdminComponent', () => {
|
||||||
|
let component: AdminComponent;
|
||||||
|
let fixture: ComponentFixture<AdminComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [AdminComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(AdminComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
61
mocks/old-stuff/pages/admin/admin.component.ts
Normal file
61
mocks/old-stuff/pages/admin/admin.component.ts
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { ConfigService } from '../../services/config.service';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
import { PollUtilitiesService } from '../../../../src/app/core/services/poll.utilities.service';
|
||||||
|
import { environment } from '../../../../src/environments/environment';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-admin',
|
||||||
|
templateUrl: './admin.component.html',
|
||||||
|
styleUrls: ['./admin.component.scss'],
|
||||||
|
})
|
||||||
|
export class AdminComponent implements OnInit {
|
||||||
|
public tokenForAdministration = '';
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
public config: ConfigService,
|
||||||
|
public router: Router,
|
||||||
|
private utils: PollUtilitiesService,
|
||||||
|
public http: HttpClient,
|
||||||
|
public activeRoute: ActivatedRoute
|
||||||
|
) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.activeRoute.paramMap.subscribe((params) => {
|
||||||
|
console.log('params', params);
|
||||||
|
this.tokenForAdministration = params.get('token');
|
||||||
|
// redirect to home if no token provided
|
||||||
|
if (!this.tokenForAdministration) {
|
||||||
|
alert('pas de token pour administrer un sondage, mauvaise URL.');
|
||||||
|
this.router.navigate(['/home']);
|
||||||
|
}
|
||||||
|
if (!this.config.loading) {
|
||||||
|
// get token paarameter from route
|
||||||
|
// fetch admin version of the poll
|
||||||
|
// then, populate UI.
|
||||||
|
this.fetchPoll();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// fetch poll with its ID or custom_url.
|
||||||
|
fetchPoll() {
|
||||||
|
const token = this.tokenForAdministration;
|
||||||
|
const headers = this.utils.makeHeaders({ token: token });
|
||||||
|
this.config.loading = true;
|
||||||
|
// store it in the poll property here
|
||||||
|
// this.http.get(`${environment.baseApiHref}/admin/${token}`, headers).subscribe(
|
||||||
|
// (res: any) => {
|
||||||
|
// console.log('res', res);
|
||||||
|
// this.config.updateCurrentPollFromResponse(res);
|
||||||
|
// this.config.loading = false;
|
||||||
|
// },
|
||||||
|
// (e) => {
|
||||||
|
// // handle need for a password
|
||||||
|
// console.log('e', e);
|
||||||
|
// this.config.handleError(e);
|
||||||
|
// }
|
||||||
|
// );
|
||||||
|
}
|
||||||
|
}
|
76
mocks/old-stuff/pages/answers/answers.component.html
Normal file
76
mocks/old-stuff/pages/answers/answers.component.html
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
<div class="answers">
|
||||||
|
<h1 i18n>
|
||||||
|
Choisir les propositions
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<p class="subtitle" i18n>
|
||||||
|
Vous pouvez utiliser la syntaxe markdown, et naviguer entre les inputs avec les flèches du clavier.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li #answers *ngFor="let answer of config.answers; index as i; trackBy: trackFunction" class="answer-item">
|
||||||
|
<button class="btn btn--default" title="ajouter une image" (click)="showModalForPictureOfAnswer(answer)">
|
||||||
|
<i class="fa fa-image" aria-hidden="true"></i>
|
||||||
|
</button>
|
||||||
|
<label for="answer_{{ answer.id }}_url" (click)="showModalForPictureOfAnswer(answer)">
|
||||||
|
<img class="img-thumbnail" src="{{ answer.url }}" alt="image {{ answer.url }}" />
|
||||||
|
</label>
|
||||||
|
<p-dialog class="url-dialog" [(visible)]="display" [modal]="true">
|
||||||
|
<p-header>
|
||||||
|
{{ answer.text }}
|
||||||
|
</p-header>
|
||||||
|
|
||||||
|
<form action="#" (submit)="display = false">
|
||||||
|
<label for="answer_{{ answer.id }}_url">
|
||||||
|
Choisissez une URL pour illustrer le choix de réponse
|
||||||
|
</label>
|
||||||
|
<i class="fa fa-image" aria-hidden="true"></i>
|
||||||
|
<br />
|
||||||
|
<input
|
||||||
|
class="input is-block"
|
||||||
|
id="answer_{{ answer.id }}_url"
|
||||||
|
type="text"
|
||||||
|
autofocus="autofocus"
|
||||||
|
name="answer-url"
|
||||||
|
[(ngModel)]="answer.url"
|
||||||
|
/>
|
||||||
|
</form>
|
||||||
|
</p-dialog>
|
||||||
|
<input
|
||||||
|
type="name"
|
||||||
|
class="answer"
|
||||||
|
id="answer_{{ answer.id }}"
|
||||||
|
[(ngModel)]="answer.text"
|
||||||
|
(keyup.enter)="addAnswer()"
|
||||||
|
(keyup)="navigateOrDelete($event, i)"
|
||||||
|
required="required"
|
||||||
|
placeholder="réponse"
|
||||||
|
/>
|
||||||
|
<button class="btn btn--alert" (click)="config.answers.splice(i, 1)">X</button>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<button
|
||||||
|
class="btn btn--primary btn--outline"
|
||||||
|
(click)="addAnswer()"
|
||||||
|
[ngClass]="{ 'btn--primary': allAnswersAreValid }"
|
||||||
|
i18n
|
||||||
|
>
|
||||||
|
<i class="fa fa-plus" aria-hidden="true"></i>
|
||||||
|
Ajouter une proposition
|
||||||
|
</button>
|
||||||
|
<br />
|
||||||
|
<button
|
||||||
|
routerLink="../resume"
|
||||||
|
class="btn btn--full"
|
||||||
|
i18n
|
||||||
|
[ngClass]="{ 'btn--primary': allAnswersAreValid }"
|
||||||
|
[disabled]="!allAnswersAreValid"
|
||||||
|
>
|
||||||
|
Voyons ce que ça donne
|
||||||
|
</button>
|
||||||
|
<br />
|
||||||
|
<a routerLink="./../home" class="prev" i18n>
|
||||||
|
Retour
|
||||||
|
</a>
|
||||||
|
</div>
|
24
mocks/old-stuff/pages/answers/answers.component.spec.ts
Normal file
24
mocks/old-stuff/pages/answers/answers.component.spec.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { AnswersComponent } from './answers.component';
|
||||||
|
|
||||||
|
describe('AnswersComponent', () => {
|
||||||
|
let component: AnswersComponent;
|
||||||
|
let fixture: ComponentFixture<AnswersComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [AnswersComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(AnswersComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
93
mocks/old-stuff/pages/answers/answers.component.ts
Normal file
93
mocks/old-stuff/pages/answers/answers.component.ts
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
import { AfterViewInit, ChangeDetectorRef, Component, Inject, OnChanges, OnInit } from '@angular/core';
|
||||||
|
import { BaseComponent } from '../example/base-page/base.component';
|
||||||
|
import { ConfigService } from '../../services/config.service';
|
||||||
|
|
||||||
|
import { DOCUMENT } from '@angular/common';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-answers',
|
||||||
|
templateUrl: './answers.component.html',
|
||||||
|
styleUrls: ['./answers.component.scss'],
|
||||||
|
})
|
||||||
|
export class AnswersComponent extends BaseComponent implements OnInit, AfterViewInit, OnChanges {
|
||||||
|
allAnswersAreValid = false;
|
||||||
|
|
||||||
|
answerList = [];
|
||||||
|
currentHeader: any = '';
|
||||||
|
display: boolean;
|
||||||
|
|
||||||
|
constructor(public config: ConfigService, @Inject(DOCUMENT) private document: any, private cd: ChangeDetectorRef) {
|
||||||
|
super(config);
|
||||||
|
this.answerList = this.config.answers;
|
||||||
|
}
|
||||||
|
|
||||||
|
// todo, manage validation of each page in a common way
|
||||||
|
ngOnInit(): void {}
|
||||||
|
|
||||||
|
ngOnChanges() {
|
||||||
|
this.checkValidAnswers();
|
||||||
|
}
|
||||||
|
|
||||||
|
checkValidAnswers() {
|
||||||
|
this.allAnswersAreValid = true;
|
||||||
|
this.config.answers.forEach((answer) => {
|
||||||
|
if (!answer.text.length) {
|
||||||
|
this.allAnswersAreValid = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
ngAfterViewInit() {
|
||||||
|
this.focusOnAnswer(0);
|
||||||
|
this.checkValidAnswers();
|
||||||
|
}
|
||||||
|
|
||||||
|
trackFunction(index: number, item: any): number {
|
||||||
|
return item.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
addAnswer() {
|
||||||
|
this.config.answers.push({
|
||||||
|
id: this.config.answers.length + 1,
|
||||||
|
text: '',
|
||||||
|
url: '',
|
||||||
|
file: '',
|
||||||
|
literal: '',
|
||||||
|
date_object: null,
|
||||||
|
timeList: [],
|
||||||
|
});
|
||||||
|
this.cd.detectChanges(); // to refresh the view before focusing on the new input
|
||||||
|
this.focusOnAnswer(this.config.answers.length - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
focusOnAnswer(i) {
|
||||||
|
const AnswersDomToFocus = this.document.querySelectorAll('.answers .answer');
|
||||||
|
const dom = AnswersDomToFocus[i];
|
||||||
|
if (dom.focus) {
|
||||||
|
dom.focus();
|
||||||
|
}
|
||||||
|
if (dom.select) {
|
||||||
|
dom.select();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
navigateOrDelete(event: KeyboardEvent, i) {
|
||||||
|
if (event.ctrlKey && event.key == 'd') {
|
||||||
|
this.config.answers.splice(i, 1);
|
||||||
|
}
|
||||||
|
if (event.key == 'ArrowUp' && i > 0) {
|
||||||
|
this.focusOnAnswer(i - 1);
|
||||||
|
}
|
||||||
|
if (event.key == 'ArrowDown' && i < this.config.answers.length) {
|
||||||
|
this.focusOnAnswer(i + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
showModalForPictureOfAnswer(answer) {
|
||||||
|
// TODO
|
||||||
|
this.currentHeader = answer;
|
||||||
|
this.display = true;
|
||||||
|
// this.config.todo();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,71 @@
|
|||||||
|
<div class="container">
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column" id="newPoll">
|
||||||
|
<section class="creation">
|
||||||
|
<h1>
|
||||||
|
{{ 'creation.title' | translate }}
|
||||||
|
</h1>
|
||||||
|
<p class="description margin-btm-x5" i18n>
|
||||||
|
{{ 'config.description' | translate }}
|
||||||
|
</p>
|
||||||
|
<div class="btn-next">
|
||||||
|
<button routerLink="../date" class="btn btn--full btn--primary">
|
||||||
|
{{ 'config.letsgo' | translate }}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<div class="column" id="searchMyPolls">
|
||||||
|
<section class="recuperation">
|
||||||
|
<h1>
|
||||||
|
{{ 'config.find_my_polls' | translate }}
|
||||||
|
</h1>
|
||||||
|
<form (ngSubmit)="findMyPollsByEmail(config.myEmail)">
|
||||||
|
<label class="description" for="sendemail" i18n>
|
||||||
|
<i class="fa fa-envelope" aria-hidden="true"></i>
|
||||||
|
{{ 'config.find_helper' | translate }} :
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
[(ngModel)]="config.myEmail"
|
||||||
|
class="input"
|
||||||
|
autofocus="autofocus"
|
||||||
|
id="sendemail"
|
||||||
|
name="mail"
|
||||||
|
required="required"
|
||||||
|
type="email"
|
||||||
|
/>
|
||||||
|
<input
|
||||||
|
[disabled]="!config.myEmail || !config.myEmail.length"
|
||||||
|
[ngClass]="{ 'btn--primary': config.myEmail }"
|
||||||
|
class="btn btn--full"
|
||||||
|
id="sendemailbutton"
|
||||||
|
i18n-value="'config.find_button'|translate"
|
||||||
|
type="submit"
|
||||||
|
/>
|
||||||
|
</form>
|
||||||
|
</section>
|
||||||
|
<section class="list-my-polls" *ngIf="!config.loading">
|
||||||
|
<h2>
|
||||||
|
Mes Sondages trouvés:
|
||||||
|
</h2>
|
||||||
|
<ul class="poll-list" *ngFor="let poll of config.myPolls; index as i; trackBy: trackFunction">
|
||||||
|
<li>
|
||||||
|
<a href="{{ poll.url }}">
|
||||||
|
{{ poll.question }}
|
||||||
|
<sub>
|
||||||
|
{{ poll.description }}
|
||||||
|
</sub>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="no-polls" *ngIf="!config.myPolls || !config.myPolls.length">
|
||||||
|
Aucun sondage.
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<div class="loading" *ngIf="config.loading">
|
||||||
|
<i class="fa fa-refresh fa-spin" aria-hidden="true"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,27 @@
|
|||||||
|
.container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
display: inline-block;
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
font-size: 2.6rem;
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
content: '';
|
||||||
|
display: block;
|
||||||
|
width: 27.4%;
|
||||||
|
height: 2px;
|
||||||
|
margin-top: 5px;
|
||||||
|
margin-right: auto;
|
||||||
|
margin-left: auto;
|
||||||
|
// background-color: $primary_color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
label {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
input[type='email'] {
|
||||||
|
display: block;
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { CreateOrRetrieveComponent } from './create-or-retrieve.component';
|
||||||
|
|
||||||
|
describe('CreateOrRetrieveComponent', () => {
|
||||||
|
let component: CreateOrRetrieveComponent;
|
||||||
|
let fixture: ComponentFixture<CreateOrRetrieveComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [CreateOrRetrieveComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(CreateOrRetrieveComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,34 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { BaseComponent } from '../example/base-page/base.component';
|
||||||
|
import { ConfigService } from '../../services/config.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-create-or-retrieve',
|
||||||
|
templateUrl: './create-or-retrieve.component.html',
|
||||||
|
styleUrls: ['./create-or-retrieve.component.scss'],
|
||||||
|
})
|
||||||
|
export class CreateOrRetrieveComponent extends BaseComponent implements OnInit {
|
||||||
|
loadedMyPolls = false;
|
||||||
|
|
||||||
|
constructor(public config: ConfigService) {
|
||||||
|
super(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
// if (!environment.production) {
|
||||||
|
// this.findMyPollsByEmail('tktest@tktest.com')
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
findMyPollsByEmail(email: string) {
|
||||||
|
if (!email) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.config.findPollsByEmail(email);
|
||||||
|
this.loadedMyPolls = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
trackFunction(index: number, item: any): number {
|
||||||
|
return item.id;
|
||||||
|
}
|
||||||
|
}
|
155
mocks/old-stuff/pages/dates/dates.component.html
Normal file
155
mocks/old-stuff/pages/dates/dates.component.html
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
<h1 class="title is-1"><i class="fa fa-calendar" aria-hidden="true"></i> {{ 'dates.title' | translate }}</h1>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label for="multi_hours">
|
||||||
|
<span>
|
||||||
|
{{ 'dates.hours_different' | translate }}
|
||||||
|
</span>
|
||||||
|
<select [(ngModel)]="config.allowSeveralHours" id="multi_hours" name="multi_hours">
|
||||||
|
<option value="true">{{ 'dates.multiple.different' | translate }}</option>
|
||||||
|
<option value="false">{{ 'dates.multiple.identical' | translate }}</option>
|
||||||
|
</select>
|
||||||
|
<span i18n>
|
||||||
|
{{ 'dates.hours_each_day' | translate }}
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button (click)="addDate()" class="btn btn--primary" id="add_date_button">
|
||||||
|
<i class="fa fa-plus" aria-hidden="true"></i>
|
||||||
|
{{ 'dates.add' | translate }}
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
(click)="showDateInterval = !showDateInterval"
|
||||||
|
[ngClass]="{ active: showDateInterval }"
|
||||||
|
class="btn btn--primary"
|
||||||
|
id="toggle_interval_button"
|
||||||
|
>
|
||||||
|
<i class="fa fa-clock-o" aria-hidden="true"></i>
|
||||||
|
{{ 'dates.add_interval' | translate }}
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button (click)="emptyAll()" class="btn btn--warning" id="empty_button">
|
||||||
|
<i class="fa fa-trash" aria-hidden="true"></i>
|
||||||
|
{{ 'dates.empty' | translate }}
|
||||||
|
</button>
|
||||||
|
<section *ngIf="showDateInterval" class="date-interval">
|
||||||
|
<!-- TODO à mettre en popup-->
|
||||||
|
<hr />
|
||||||
|
<h2>{{ 'dates.add_interval' | translate }}</h2>
|
||||||
|
<p>
|
||||||
|
{{ 'dates.interval_propose' | translate }}
|
||||||
|
<input (change)="countDays()" [(ngModel)]="startDateInterval" type="date" />
|
||||||
|
{{ 'dates.interval_span' | translate }}
|
||||||
|
<input (change)="countDays()" [(ngModel)]="endDateInterval" type="date" />
|
||||||
|
<br />
|
||||||
|
</p>
|
||||||
|
<button (click)="addIntervalOfDates()" class="btn btn-block btn--primary">
|
||||||
|
<i class="fa fa-plus" aria-hidden="true"></i>
|
||||||
|
{{ 'dates.interval_button' | translate }}
|
||||||
|
{{ intervalDays }}
|
||||||
|
{{ 'dates.interval_button_dates' | translate }}
|
||||||
|
</button>
|
||||||
|
<hr />
|
||||||
|
</section>
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column">
|
||||||
|
<div class="dates-list">
|
||||||
|
<div class="title">
|
||||||
|
<span class="count-dates">
|
||||||
|
{{ config.timeList.length }}
|
||||||
|
</span>
|
||||||
|
<span class="count-dates-txt">
|
||||||
|
{{ 'dates.count_time' | translate }}
|
||||||
|
(pour chaque jour)
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="actions">
|
||||||
|
<button
|
||||||
|
(click)="addTime()"
|
||||||
|
*ngIf="'false' === config.allowSeveralHours"
|
||||||
|
class="btn btn--primary"
|
||||||
|
id="add_time_button"
|
||||||
|
>
|
||||||
|
<i class="fa fa-plus" aria-hidden="true"></i>
|
||||||
|
{{ 'dates.add_time' | translate }}
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
(click)="removeAllTimes()"
|
||||||
|
*ngIf="'false' === config.allowSeveralHours"
|
||||||
|
class="btn btn--warning"
|
||||||
|
id="remove_time_button"
|
||||||
|
>
|
||||||
|
<i class="fa fa-trash" aria-hidden="true"></i>
|
||||||
|
Aucune plage horaire
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
(click)="resetTimes()"
|
||||||
|
*ngIf="'false' === config.allowSeveralHours"
|
||||||
|
class="btn btn--warning"
|
||||||
|
id="reset_time_button"
|
||||||
|
>
|
||||||
|
<i class="fa fa-refresh" aria-hidden="true"></i>
|
||||||
|
réinitialiser
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div *ngIf="'false' === config.allowSeveralHours" class="identical-dates">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<span class="count-dates title">
|
||||||
|
{{ config.dateList.length }}
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
{{ 'dates.count_dates' | translate }}
|
||||||
|
</span>
|
||||||
|
<button class="btn btn--primary" (click)="addDate()">
|
||||||
|
{{ 'dates.add' | translate }}
|
||||||
|
</button>
|
||||||
|
<div *ngFor="let choice of config.dateList; index as id" class="date-choice">
|
||||||
|
{{ id }})
|
||||||
|
<input
|
||||||
|
[(ngModel)]="choice.date_object"
|
||||||
|
name="dateChoices_{{ id }}"
|
||||||
|
id="dateChoices_{{ id }}"
|
||||||
|
useValueAsDate
|
||||||
|
type="date"
|
||||||
|
/>
|
||||||
|
<button (click)="config.dateList.splice(id, 1)" class="btn btn-warning">
|
||||||
|
<i class="fa fa-times" aria-hidden="true"></i>
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
(click)="addTimeToDate(choice, id)"
|
||||||
|
*ngIf="'true' === config.allowSeveralHours"
|
||||||
|
class="btn btn--primary"
|
||||||
|
>
|
||||||
|
{{ 'dates.add_time' | translate }}
|
||||||
|
</button>
|
||||||
|
<div *ngIf="'true' === config.allowSeveralHours" class="several-times">
|
||||||
|
<div *ngFor="let timeItem of choice.timeList; index as idTime" class="time-choice">
|
||||||
|
<input
|
||||||
|
[(ngModel)]="timeItem.literal"
|
||||||
|
name="dateTime_{{ id }}_Choices_{{ idTime }}"
|
||||||
|
id="dateTime_{{ id }}_Choices_{{ idTime }}"
|
||||||
|
type="text"
|
||||||
|
/>
|
||||||
|
<button (click)="choice.timeList.splice(idTime, 1)" class="btn btn-warning">
|
||||||
|
<i class="fa fa-times" aria-hidden="true"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<app-resume></app-resume>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a routerLink="../resume" class="btn btn--full btn--primary">
|
||||||
|
C'est parfait!
|
||||||
|
</a>
|
||||||
|
<a routerLink="../../home" class="prev">
|
||||||
|
Retour
|
||||||
|
</a>
|
43
mocks/old-stuff/pages/dates/dates.component.scss
Normal file
43
mocks/old-stuff/pages/dates/dates.component.scss
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
:host {
|
||||||
|
.several-times {
|
||||||
|
padding-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.date-interval {
|
||||||
|
padding: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dates-list {
|
||||||
|
.btn--primary {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.date-choice {
|
||||||
|
input {
|
||||||
|
width: 70%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
input,
|
||||||
|
button {
|
||||||
|
+ button {
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.columns {
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.identical-dates {
|
||||||
|
label {
|
||||||
|
width: 3ch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
24
mocks/old-stuff/pages/dates/dates.component.spec.ts
Normal file
24
mocks/old-stuff/pages/dates/dates.component.spec.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { DatesComponent } from './dates.component';
|
||||||
|
|
||||||
|
describe('DatesComponent', () => {
|
||||||
|
let component: DatesComponent;
|
||||||
|
let fixture: ComponentFixture<DatesComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [DatesComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(DatesComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
134
mocks/old-stuff/pages/dates/dates.component.ts
Normal file
134
mocks/old-stuff/pages/dates/dates.component.ts
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
import { DOCUMENT } from '@angular/common';
|
||||||
|
import { ChangeDetectorRef, Component, Inject, OnInit } from '@angular/core';
|
||||||
|
|
||||||
|
import { ToastService } from '../../../../src/app/core/services/toast.service';
|
||||||
|
import { DateUtilitiesService } from '../../../../src/app/core/services/date.utilities.service';
|
||||||
|
import { otherDefaultDates } from '../../config/defaultConfigs';
|
||||||
|
import { ConfigService } from '../../services/config.service';
|
||||||
|
import { BaseComponent } from '../example/base-page/base.component';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-dates',
|
||||||
|
templateUrl: './dates.component.html',
|
||||||
|
styleUrls: ['./dates.component.scss'],
|
||||||
|
})
|
||||||
|
export class DatesComponent extends BaseComponent implements OnInit {
|
||||||
|
showDateInterval = false;
|
||||||
|
startDateInterval: any;
|
||||||
|
intervalDays: any;
|
||||||
|
intervalDaysDefault = 7;
|
||||||
|
endDateInterval: any;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
public config: ConfigService,
|
||||||
|
private cd: ChangeDetectorRef,
|
||||||
|
private toastService: ToastService,
|
||||||
|
private dateUtilities: DateUtilitiesService,
|
||||||
|
@Inject(DOCUMENT) private document: any
|
||||||
|
) {
|
||||||
|
super(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
countDays() {
|
||||||
|
// compute the number of dateList in the date interval
|
||||||
|
if (this.endDateInterval && this.startDateInterval) {
|
||||||
|
this.intervalDays = this.dateUtilities.dayDiff(this.endDateInterval, this.startDateInterval).toFixed(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set the interval options
|
||||||
|
*/
|
||||||
|
ngOnInit(): void {
|
||||||
|
const dateCurrent = new Date();
|
||||||
|
const dateJson = dateCurrent.toISOString();
|
||||||
|
this.startDateInterval = dateJson.substring(0, 10);
|
||||||
|
this.endDateInterval = this.dateUtilities
|
||||||
|
.addDaysToDate(this.intervalDaysDefault, dateCurrent)
|
||||||
|
.toISOString()
|
||||||
|
.substring(0, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
addDate() {
|
||||||
|
this.config.dateList.push({
|
||||||
|
literal: '',
|
||||||
|
date_object: new Date(),
|
||||||
|
timeList: [],
|
||||||
|
});
|
||||||
|
const selector = '["choice_label_' + (this.config.dateList.length - 1) + '"]';
|
||||||
|
this.cd.detectChanges();
|
||||||
|
const elem = this.document.querySelector(selector);
|
||||||
|
if (elem) {
|
||||||
|
elem.focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* change time spans
|
||||||
|
*/
|
||||||
|
addTime() {
|
||||||
|
this.config.timeList.push({
|
||||||
|
literal: '',
|
||||||
|
timeList: [],
|
||||||
|
date_object: new Date(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
removeAllTimes() {
|
||||||
|
this.config.timeList = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
resetTimes() {
|
||||||
|
this.config.timeList = otherDefaultDates;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* add a time period to a specific date choice,
|
||||||
|
* focus on the new input
|
||||||
|
* @param config
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
addTimeToDate(config: any, id: number) {
|
||||||
|
config.timeList.push({ literal: '' });
|
||||||
|
const selector = '[ng-reflect-choice_label="dateTime_' + id + '_Choices_' + (config.timeList.length - 1) + '"]';
|
||||||
|
this.cd.detectChanges();
|
||||||
|
const elem = this.document.querySelector(selector);
|
||||||
|
if (elem) {
|
||||||
|
elem.focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* remove all input contents, does not reset to default
|
||||||
|
*/
|
||||||
|
emptyAll() {
|
||||||
|
this.config.dateList.forEach((element) => {
|
||||||
|
element.literal = '';
|
||||||
|
element.date_object = new Date();
|
||||||
|
element.timeList = ['', '', ''];
|
||||||
|
});
|
||||||
|
this.config.timeList.forEach((element) => {
|
||||||
|
element.literal = '';
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* add all the dates between the start and end dates in the interval section
|
||||||
|
*/
|
||||||
|
addIntervalOfDates() {
|
||||||
|
const newIntervalArray = this.dateUtilities.getDatesInRange(this.startDateInterval, this.endDateInterval, 1);
|
||||||
|
|
||||||
|
const converted = [];
|
||||||
|
newIntervalArray.forEach((element) => {
|
||||||
|
converted.push({
|
||||||
|
literal: element.literal,
|
||||||
|
date_object: element.date_object,
|
||||||
|
timeList: [],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
this.config.dateList = [...new Set(converted)]; // add only dates that are not already present with a Set of unique items
|
||||||
|
this.showDateInterval = false;
|
||||||
|
|
||||||
|
this.toastService.display(`les dates ont été ajoutées aux réponses possibles.`);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
<h1 i18n>
|
||||||
|
{{ 'resume.title' | translate }}
|
||||||
|
</h1>
|
||||||
|
<section class="admin">
|
||||||
|
<h2 i18n>{{ 'resume.admins' | translate }}</h2>
|
||||||
|
<p>
|
||||||
|
Votre sondage «
|
||||||
|
<span class="poll-title">
|
||||||
|
{{ config.title }}
|
||||||
|
</span>
|
||||||
|
» a bien été créé !
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Voici les liens d’accès au sondage, conservez-les soigneusement ! (Si vous les perdez vous pourrez toujours les
|
||||||
|
recevoir par email)
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Pour accéder au sondage et à tous ses paramètres :
|
||||||
|
<a href="{{ config.urlAdmin }}">{{ config.urlAdmin }} </a>
|
||||||
|
</p>
|
||||||
|
<app-copy-text [textToCopy]="config.urlAdmin"></app-copy-text>
|
||||||
|
<a href="{{ config.urlAdmin }}">
|
||||||
|
Voir le sondage coté administrateur·ice
|
||||||
|
</a>
|
||||||
|
<p class="note">
|
||||||
|
Note : Le sondage sera supprimé {{ config.deletionDateAfterLastModification }} jours après la date de sa
|
||||||
|
dernière modification.
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
<section class="public">
|
||||||
|
<h2 i18n>{{ 'resume.users' | translate }}</h2>
|
||||||
|
<p>
|
||||||
|
Pour accéder au sondage :
|
||||||
|
<a href="{{ config.urlPublic }}">{{ config.urlPublic }} </a>
|
||||||
|
</p>
|
||||||
|
<app-copy-text [textToCopy]="config.urlPublic"></app-copy-text>
|
||||||
|
<a href="{{ config.urlPublic }}">
|
||||||
|
Voir le sondage
|
||||||
|
</a>
|
||||||
|
</section>
|
||||||
|
<section class="mail">
|
||||||
|
<h2 i18n>{{ 'resume.links_mail' | translate }}</h2>
|
||||||
|
<p>
|
||||||
|
Pour être sur de retrouver ces liens, nous pouvons vous les envoyer sur votre mail mail :
|
||||||
|
<input type="email" [(ngModel)]="mailToRecieve" paceholder="email" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<button class="btn btn--primary" (click)="sendToEmail()">
|
||||||
|
<i class="fa fa-paper-plane" aria-hidden="true"></i>
|
||||||
|
Envoyer les liens du sondage
|
||||||
|
</button>
|
||||||
|
<a href="{{ config.urlPublic }}">
|
||||||
|
Voir le sondage
|
||||||
|
</a>
|
||||||
|
</section>
|
@ -0,0 +1,5 @@
|
|||||||
|
:host {
|
||||||
|
button {
|
||||||
|
margin-right: 1em;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { EndConfirmationComponent } from './end-confirmation.component';
|
||||||
|
|
||||||
|
describe('EndConfirmationComponent', () => {
|
||||||
|
let component: EndConfirmationComponent;
|
||||||
|
let fixture: ComponentFixture<EndConfirmationComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [EndConfirmationComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(EndConfirmationComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,28 @@
|
|||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
|
||||||
|
import { ToastService } from '../../../../src/app/core/services/toast.service';
|
||||||
|
import { ConfigService } from '../../services/config.service';
|
||||||
|
import { BaseComponent } from '../example/base-page/base.component';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-end-confirmation',
|
||||||
|
templateUrl: './end-confirmation.component.html',
|
||||||
|
styleUrls: ['./end-confirmation.component.scss'],
|
||||||
|
})
|
||||||
|
export class EndConfirmationComponent extends BaseComponent implements OnInit {
|
||||||
|
mailToRecieve = '';
|
||||||
|
|
||||||
|
constructor(public config: ConfigService, public http: HttpClient, private toastService: ToastService) {
|
||||||
|
super(config);
|
||||||
|
this.mailToRecieve = this.config.myEmail;
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {}
|
||||||
|
|
||||||
|
copyLink(str: any) {
|
||||||
|
this.toastService.display(`Lien copié : ${str}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
sendToEmail() {}
|
||||||
|
}
|
@ -0,0 +1,4 @@
|
|||||||
|
<h1>Ce composant est celui de base pour les pages</h1>
|
||||||
|
<a routerLink="../end" class="btn btn-block" i18n="@@confirm">
|
||||||
|
{{ 'config.perfect' | translate }}
|
||||||
|
</a>
|
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { BaseComponent } from './base.component';
|
||||||
|
|
||||||
|
describe('BaseComponent', () => {
|
||||||
|
let component: BaseComponent;
|
||||||
|
let fixture: ComponentFixture<BaseComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [BaseComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(BaseComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
29
mocks/old-stuff/pages/example/base-page/base.component.ts
Normal file
29
mocks/old-stuff/pages/example/base-page/base.component.ts
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
|
||||||
|
import { ConfigService } from '../../../services/config.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-base-page',
|
||||||
|
templateUrl: './base.component.html',
|
||||||
|
styleUrls: ['./base.component.scss'],
|
||||||
|
})
|
||||||
|
/**
|
||||||
|
* base page is aware of the state of the filling
|
||||||
|
*/
|
||||||
|
export class BaseComponent implements OnInit {
|
||||||
|
constructor(public config: ConfigService) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {}
|
||||||
|
|
||||||
|
public checkValidity(): boolean {
|
||||||
|
// TODO with form controls
|
||||||
|
this.config.todo();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public displayErrorMessage(): boolean {
|
||||||
|
// TODO
|
||||||
|
this.config.todo();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
265
mocks/old-stuff/pages/example/kind/kind.component.html
Normal file
265
mocks/old-stuff/pages/example/kind/kind.component.html
Normal file
@ -0,0 +1,265 @@
|
|||||||
|
<h1>page de démo</h1>
|
||||||
|
<p>
|
||||||
|
cette étape est en cours de développement. <br />
|
||||||
|
S'inspirer de la page de Home pour réaliser d'autres pages
|
||||||
|
</p>
|
||||||
|
<a routerLink="../end" class="btn btn--primary" i18n="@@confirm">C'est parfait!</a>
|
||||||
|
<h1>Atoms</h1>
|
||||||
|
<section>
|
||||||
|
<article>
|
||||||
|
<h2>Headings</h2>
|
||||||
|
|
||||||
|
<h1>Ceci est un h1</h1>
|
||||||
|
<h2>Ceci est un h2</h2>
|
||||||
|
<h3>Ceci est un h3</h3>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Links</h2>
|
||||||
|
<div>
|
||||||
|
<a routerLink="../../home" class="next">
|
||||||
|
<span class="text" i18n>
|
||||||
|
C'est parti !
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a routerLink="../../home" class="prev">
|
||||||
|
<span class="text" i18n>
|
||||||
|
C'est parti !
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Buttons</h2>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--primary">
|
||||||
|
primary - default
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--primary btn--small">
|
||||||
|
primary - small
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<a href='/' class="btn btn--primary btn--outline">
|
||||||
|
primary - outline - default
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--primary btn--outline btn--small">
|
||||||
|
primary - outline - small
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<input type="submit" class="btn btn--alert" value="alert - default" />
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--alert btn--small">
|
||||||
|
alert - small
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--alert btn--outline">
|
||||||
|
alert - outline - default
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--alert btn--outline btn--small">
|
||||||
|
alert - outline - small
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<br /><br />
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--primary btn--full">
|
||||||
|
primary - full
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--primary btn--outline btn--full">
|
||||||
|
primary - outline - full
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--alert btn--full">
|
||||||
|
alert - full
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--alert btn--outline btn--full">
|
||||||
|
alert - outline - full
|
||||||
|
</button>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Forms element</h2>
|
||||||
|
|
||||||
|
<h3>Labels</h3>
|
||||||
|
|
||||||
|
<label for="">Un label pour les labelliser tous</label>
|
||||||
|
|
||||||
|
<h3>Input choice_label</h3>
|
||||||
|
<input type="name" name="" id="" /><br />
|
||||||
|
<input type="name" name="" id="" value="texte" />
|
||||||
|
|
||||||
|
<h3>Input email</h3>
|
||||||
|
<input type="email" name="" id="" /><br />
|
||||||
|
<input type="email" name="" id="" value="adresse@email.com" />
|
||||||
|
|
||||||
|
<h3>Input password</h3>
|
||||||
|
<input type="password" name="" id="" /><br />
|
||||||
|
<input type="password" name="" id="" value="password" />
|
||||||
|
|
||||||
|
<h3>Input date</h3>
|
||||||
|
<input type="date" name="" id="" /><br />
|
||||||
|
<input type="date" name="" id="" value="1985-11-23" />
|
||||||
|
|
||||||
|
<h3>Select</h3>
|
||||||
|
<select name="" id="">
|
||||||
|
<option value="">
|
||||||
|
1
|
||||||
|
</option>
|
||||||
|
<option value="">
|
||||||
|
2
|
||||||
|
</option>
|
||||||
|
<option value="">
|
||||||
|
3
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<h3>Textarea</h3>
|
||||||
|
<textarea name="" id="" cols="30" rows="10"></textarea>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Paragraphs</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Magnam perspiciatis minus libero error dolores.
|
||||||
|
Corrupti repellat vero repellendus reiciendis assumenda minus. Nobis, quaerat ut nihil minima sed animi
|
||||||
|
delectus beatae!
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Lists</h2>
|
||||||
|
|
||||||
|
<h3>Unordered list</h3>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
plop
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
plop
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
plop
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3>Ordered list</h3>
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
plop
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
plop
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
plop
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Images</h2>
|
||||||
|
<img src="http://placekitten.com/200/300" alt="" />
|
||||||
|
</article>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h1>Molecules</h1>
|
||||||
|
<app-voting-choice></app-voting-choice>
|
||||||
|
<article>
|
||||||
|
<h2>Useful classes</h2>
|
||||||
|
|
||||||
|
<h3>Align right</h3>
|
||||||
|
<div class="align-right">
|
||||||
|
<a routerLink="../../home" class="next">
|
||||||
|
<span class="text" i18n>
|
||||||
|
C'est parti !
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Label + input choice_label</h2>
|
||||||
|
<label for="test-text">Ceci est un label un peu long mais pas trop</label>
|
||||||
|
<input type="name" name="test-text" id="test-text" />
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Label + select</h2>
|
||||||
|
<label for="test-select">Ceci est un label un peu long mais pas trop</label>
|
||||||
|
<select name="test-select" id="test-select">
|
||||||
|
<option value="">
|
||||||
|
1
|
||||||
|
</option>
|
||||||
|
<option value="">
|
||||||
|
2
|
||||||
|
</option>
|
||||||
|
<option value="">
|
||||||
|
3
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Input choice_label with info</h2>
|
||||||
|
<a href="https://sketch.cloud/s/00A80/a/MAl5q7">like here</a>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Commentaries</h2>
|
||||||
|
</article>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h1>Components</h1>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Images list</h2>
|
||||||
|
<a href="https://sketch.cloud/s/00A80/a/bQA9wj">that</a>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Calendar</h2>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Modale</h2>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Way to vote</h2>
|
||||||
|
<a href="https://sketch.cloud/s/00A80/a/Ol0598">that</a>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Voted</h2>
|
||||||
|
<a href="https://sketch.cloud/s/00A80/a/OlJZo2">that</a>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Graphics</h2>
|
||||||
|
<a href="https://sketch.cloud/s/00A80/a/megprw">that</a>
|
||||||
|
</article>
|
||||||
|
</section>
|
22
mocks/old-stuff/pages/example/kind/kind.component.scss
Normal file
22
mocks/old-stuff/pages/example/kind/kind.component.scss
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
@charset "UTF-8";
|
||||||
|
|
||||||
|
section {
|
||||||
|
&:not(:last-of-type) {
|
||||||
|
border-bottom: 6px solid #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ section {
|
||||||
|
margin: 0 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
article {
|
||||||
|
padding: 2rem 0;
|
||||||
|
border-top: 3px solid #ffb92c;
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
&:not(:first-of-type) {
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
24
mocks/old-stuff/pages/example/kind/kind.component.spec.ts
Normal file
24
mocks/old-stuff/pages/example/kind/kind.component.spec.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { KindComponent } from './kind.component';
|
||||||
|
|
||||||
|
describe('KindComponent', () => {
|
||||||
|
let component: KindComponent;
|
||||||
|
let fixture: ComponentFixture<KindComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [KindComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(KindComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
16
mocks/old-stuff/pages/example/kind/kind.component.ts
Normal file
16
mocks/old-stuff/pages/example/kind/kind.component.ts
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { BaseComponent } from '../base-page/base.component';
|
||||||
|
import { ConfigService } from '../../../services/config.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-page-kind',
|
||||||
|
templateUrl: './kind.component.html',
|
||||||
|
styleUrls: ['./kind.component.scss'],
|
||||||
|
})
|
||||||
|
export class KindComponent extends BaseComponent implements OnInit {
|
||||||
|
constructor(public config: ConfigService) {
|
||||||
|
super(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {}
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
<!--ceci est la popup pour ajouter une image-->
|
||||||
|
<h1 i18n>
|
||||||
|
Images
|
||||||
|
</h1>
|
||||||
|
<a routerLink="../visibility" class="btn btn--primary">ok</a>
|
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { PicturesComponent } from './pictures.component';
|
||||||
|
|
||||||
|
describe('PicturesComponent', () => {
|
||||||
|
let component: PicturesComponent;
|
||||||
|
let fixture: ComponentFixture<PicturesComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [PicturesComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(PicturesComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
16
mocks/old-stuff/pages/example/pictures/pictures.component.ts
Normal file
16
mocks/old-stuff/pages/example/pictures/pictures.component.ts
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { ConfigService } from '../../../services/config.service';
|
||||||
|
import { BaseComponent } from '../base-page/base.component';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-pictures',
|
||||||
|
templateUrl: './pictures.component.html',
|
||||||
|
styleUrls: ['./pictures.component.scss'],
|
||||||
|
})
|
||||||
|
export class PicturesComponent extends BaseComponent implements OnInit {
|
||||||
|
constructor(public config: ConfigService) {
|
||||||
|
super(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {}
|
||||||
|
}
|
92
mocks/old-stuff/pages/home/home.component.html
Normal file
92
mocks/old-stuff/pages/home/home.component.html
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
<div class="description">
|
||||||
|
<router-outlet></router-outlet>
|
||||||
|
|
||||||
|
<h1 i18n>
|
||||||
|
{{ 'creation.title' | translate }}
|
||||||
|
</h1>
|
||||||
|
<span class="pre-selector" i18n>
|
||||||
|
{{ 'creation.want' | translate }}
|
||||||
|
</span>
|
||||||
|
<button (click)="config.resetConfig()" class="btn btn--warning">
|
||||||
|
Reset all
|
||||||
|
</button>
|
||||||
|
<select [(ngModel)]="config.pollType" autofocus="autofocus" id="selector" name="polltype">
|
||||||
|
<option value="dates" name="polltype_date">
|
||||||
|
{{ 'creation.kind.date' | translate }}
|
||||||
|
</option>
|
||||||
|
<option value="classic" name="polltype_classic">
|
||||||
|
{{ 'creation.kind.classic' | translate }}
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<span class="post-selector"> </span>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label class="title-label" for="poll_title" i18n>
|
||||||
|
{{ 'creation.choose_title' | translate }}
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
[(ngModel)]="config.title"
|
||||||
|
id="poll_title"
|
||||||
|
name="poll_title"
|
||||||
|
placeholder="{{ 'creation.choose_title_placeholder' | translate }}"
|
||||||
|
type="name"
|
||||||
|
/>
|
||||||
|
<app-erasable-input [(inputModel)]="config.title"></app-erasable-input>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label for="my_name"> {{ 'creation.choice_label' | translate }} : </label>
|
||||||
|
<input
|
||||||
|
[(ngModel)]="config.myName"
|
||||||
|
id="my_name"
|
||||||
|
name="my_name"
|
||||||
|
placeholder="{{ 'creation.name_placeholder' | translate }}"
|
||||||
|
type="name"
|
||||||
|
/>
|
||||||
|
<app-erasable-input [(inputModel)]="config.myName"></app-erasable-input>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label class="title-label" for="poll_description" i18n>
|
||||||
|
{{ 'creation.description' | translate }}:
|
||||||
|
<app-erasable-input [(inputModel)]="config.description"></app-erasable-input>
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
<textarea
|
||||||
|
[(ngModel)]="config.description"
|
||||||
|
cols="50"
|
||||||
|
id="poll_description"
|
||||||
|
lines="5"
|
||||||
|
name="poll_description"
|
||||||
|
placeholder="description"
|
||||||
|
></textarea>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label for="email">
|
||||||
|
Mon email pour administrer le sondage est
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
[(ngModel)]="config.myEmail"
|
||||||
|
autofocus="autofocus"
|
||||||
|
id="email"
|
||||||
|
name="mail"
|
||||||
|
required="required"
|
||||||
|
type="email"
|
||||||
|
/>
|
||||||
|
<app-erasable-input [(inputModel)]="config.myEmail"></app-erasable-input>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button routerLink="../answers" class="btn btn--primary btn--full" *ngIf="config.pollType == 'classic'" i18n>
|
||||||
|
Continuer
|
||||||
|
<i class="fa fa-file-text" aria-hidden="true"></i>
|
||||||
|
</button>
|
||||||
|
<button routerLink="../date" class="btn btn--primary btn--full" *ngIf="config.pollType == 'dates'" i18n>
|
||||||
|
Continuer
|
||||||
|
<i class="fa fa-calendar-check-o" aria-hidden="true"></i>
|
||||||
|
</button>
|
||||||
|
<a routerLink="../creation" class="prev" i18n>
|
||||||
|
Retour
|
||||||
|
</a>
|
||||||
|
<hr />
|
||||||
|
</div>
|
0
mocks/old-stuff/pages/home/home.component.scss
Normal file
0
mocks/old-stuff/pages/home/home.component.scss
Normal file
24
mocks/old-stuff/pages/home/home.component.spec.ts
Normal file
24
mocks/old-stuff/pages/home/home.component.spec.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { HomeComponent } from './home.component';
|
||||||
|
|
||||||
|
describe('HomeComponent', () => {
|
||||||
|
let component: HomeComponent;
|
||||||
|
let fixture: ComponentFixture<HomeComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [HomeComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(HomeComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
17
mocks/old-stuff/pages/home/home.component.ts
Normal file
17
mocks/old-stuff/pages/home/home.component.ts
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { ConfigService } from '../../services/config.service';
|
||||||
|
import { BaseComponent } from '../example/base-page/base.component';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-home',
|
||||||
|
templateUrl: './home.component.html',
|
||||||
|
styleUrls: ['./home.component.scss'],
|
||||||
|
})
|
||||||
|
export class HomeComponent extends BaseComponent implements OnInit {
|
||||||
|
nextStep = '/step/answers';
|
||||||
|
constructor(public config: ConfigService) {
|
||||||
|
super(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {}
|
||||||
|
}
|
12
mocks/old-stuff/pages/password/password.component.html
Normal file
12
mocks/old-stuff/pages/password/password.component.html
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<h1 class="margin-btm-x3">Nom du sondage</h1>
|
||||||
|
<p class="margin-btm-x6">Ce sondage est protégé par un mot de passe</p>
|
||||||
|
|
||||||
|
<form>
|
||||||
|
<label for="password">Mot de passe :</label>
|
||||||
|
<section class="row">
|
||||||
|
<input class="margin-btm-x5" type="password" name="password" />
|
||||||
|
<input type="submit" name="view" value="Voir" class="btn btn--small btn--purple" />
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<input type="submit" name="go" value="Accéder au sondage" class="btn btn--primary btn--full btn--semi-bold" />
|
||||||
|
</form>
|
12
mocks/old-stuff/pages/password/password.component.scss
Normal file
12
mocks/old-stuff/pages/password/password.component.scss
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
form {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
label {
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
display: flex;
|
||||||
|
align-self: center;
|
||||||
|
}
|
24
mocks/old-stuff/pages/password/password.component.spec.ts
Normal file
24
mocks/old-stuff/pages/password/password.component.spec.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { PasswordComponent } from './password.component';
|
||||||
|
|
||||||
|
describe('PasswordComponent', () => {
|
||||||
|
let component: PasswordComponent;
|
||||||
|
let fixture: ComponentFixture<PasswordComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [PasswordComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(PasswordComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
16
mocks/old-stuff/pages/password/password.component.ts
Normal file
16
mocks/old-stuff/pages/password/password.component.ts
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { BaseComponent } from '../example/base-page/base.component';
|
||||||
|
import { ConfigService } from '../../services/config.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-password',
|
||||||
|
templateUrl: './password.component.html',
|
||||||
|
styleUrls: ['./password.component.scss'],
|
||||||
|
})
|
||||||
|
export class PasswordComponent extends BaseComponent implements OnInit {
|
||||||
|
constructor(public config: ConfigService) {
|
||||||
|
super(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {}
|
||||||
|
}
|
@ -0,0 +1,59 @@
|
|||||||
|
<div class="poll">
|
||||||
|
<button class="btn btn--primary" (click)="config.execStuff()" *ngIf="config.isAdmin">
|
||||||
|
launch admin action execStuff !
|
||||||
|
</button>
|
||||||
|
<button class="btn btn--primary" (click)="config.exportJson()" *ngIf="config.isAdmin">
|
||||||
|
<i class="fa fa-file-archive-o" aria-hidden="true"></i>
|
||||||
|
export json
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div class="loading" *ngIf="config.loading">
|
||||||
|
<i class="fa fa-refresh fa-spin" aria-hidden="true"></i>
|
||||||
|
</div>
|
||||||
|
<div class="loaded-poll" *ngIf="!config.loading && config.currentPoll">
|
||||||
|
<div id="choices">
|
||||||
|
<app-choices-list></app-choices-list>
|
||||||
|
</div>
|
||||||
|
<div id="table">
|
||||||
|
<!-- <app-voting-navigation ></app-voting-navigation >-->
|
||||||
|
<app-voting-summary></app-voting-summary>
|
||||||
|
</div>
|
||||||
|
<div id="poll_comments">
|
||||||
|
<app-comments-list></app-comments-list>
|
||||||
|
</div>
|
||||||
|
<div id="graph">
|
||||||
|
<!--<app-voting-graph ></app-voting-graph >-->
|
||||||
|
</div>
|
||||||
|
<div id="export_and_share">
|
||||||
|
<div class="sharing" *ngIf="config.currentPoll">
|
||||||
|
<h3 class="margin-top-x8">
|
||||||
|
Partager le sondage
|
||||||
|
|
||||||
|
<i class="fa fa-share" aria-hidden="true"></i>
|
||||||
|
</h3>
|
||||||
|
<p class="nobold text-14" for="copyLink">
|
||||||
|
Pour partager le sondage, vous pouvez diffuser ce lien :
|
||||||
|
<a href="{{ config.currentPoll.urlPublic }}">
|
||||||
|
{{ config.currentPoll.urlPublic }}
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<app-copy-text [textToCopy]="config.currentPoll.urlPublic"></app-copy-text>
|
||||||
|
<h3 class="margin-top-x6 margin-btm-x3">
|
||||||
|
Exporter/Imprimer
|
||||||
|
</h3>
|
||||||
|
<button class="export export-csv" (click)="config.exportCSV()">
|
||||||
|
Exporter en .csv
|
||||||
|
</button>
|
||||||
|
<button class="export export-print" (click)="config.print()">
|
||||||
|
Imprimer le sondage
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="badly-loaded" *ngIf="config.loading && !config.currentPoll">
|
||||||
|
<div class="well is-warning">
|
||||||
|
No current poll available
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1 @@
|
|||||||
|
@import '../../../../../src/styles/variables';
|
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { PollDisplayComponent } from './poll-display.component';
|
||||||
|
|
||||||
|
describe('PollDisplayComponent', () => {
|
||||||
|
let component: PollDisplayComponent;
|
||||||
|
let fixture: ComponentFixture<PollDisplayComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [PollDisplayComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(PollDisplayComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,70 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { BaseComponent } from '../../example/base-page/base.component';
|
||||||
|
import { ConfigService } from '../../../services/config.service';
|
||||||
|
import { mockComments } from '../../../mocks/mock-comments';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { environment } from '../../../../../src/environments/environment';
|
||||||
|
import { mockPoll3 } from '../../../mocks/mock-poll3';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-poll-display',
|
||||||
|
templateUrl: './poll-display.component.html',
|
||||||
|
styleUrls: ['./poll-display.component.scss'],
|
||||||
|
})
|
||||||
|
export class PollDisplayComponent extends BaseComponent implements OnInit {
|
||||||
|
comments = mockComments;
|
||||||
|
|
||||||
|
constructor(public config: ConfigService, private router: Router, public activeRoute: ActivatedRoute) {
|
||||||
|
super(config);
|
||||||
|
this.activeRoute.paramMap.subscribe((params) => {
|
||||||
|
console.log('params', params);
|
||||||
|
this.config.pollId = params.get('poll');
|
||||||
|
this.config.pollSlug = params.get('pollSlug');
|
||||||
|
if (!this.config.loading) {
|
||||||
|
this.fetchPoll();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {}
|
||||||
|
|
||||||
|
// fetch poll with its ID or custom_url.
|
||||||
|
fetchPoll() {
|
||||||
|
const id = this.activeRoute.snapshot.params.poll;
|
||||||
|
const pollSlug = this.activeRoute.snapshot.params.pollSlug;
|
||||||
|
|
||||||
|
if (!environment.production) {
|
||||||
|
console.log('mockPoll3', mockPoll3);
|
||||||
|
this.config.currentPoll = mockPoll3;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (id) {
|
||||||
|
this.config.loading = true;
|
||||||
|
// store it in the poll property here
|
||||||
|
this.config.getPollById(id).subscribe(
|
||||||
|
(res: any) => {
|
||||||
|
console.log('res', res);
|
||||||
|
this.config.updateCurrentPollFromResponse(res);
|
||||||
|
this.config.loading = false;
|
||||||
|
},
|
||||||
|
(e) => {
|
||||||
|
// handle need for a password
|
||||||
|
console.log('e', e);
|
||||||
|
this.config.handleError(e);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
} else if (pollSlug) {
|
||||||
|
this.config.loading = true;
|
||||||
|
this.config.getPollByURL(pollSlug).subscribe(
|
||||||
|
(res: any) => {
|
||||||
|
this.config.loading = false;
|
||||||
|
this.config.updateCurrentPollFromResponse(res);
|
||||||
|
},
|
||||||
|
(e) => {
|
||||||
|
// handle need for a password
|
||||||
|
this.config.handleError(e);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
<select
|
||||||
|
id="selectColorblind"
|
||||||
|
name="selector"
|
||||||
|
autofocus="autofocus"
|
||||||
|
[(ngModel)]="isColorblind"
|
||||||
|
(change)="toggleColorblind()"
|
||||||
|
class="input"
|
||||||
|
>
|
||||||
|
<option value="true">
|
||||||
|
{{ 'pollGraphic.choiceColorblind' | translate }}
|
||||||
|
</option>
|
||||||
|
<option value="false">
|
||||||
|
{{ 'pollGraphic.choiceNotColorblind' | translate }}
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
|
<span class="colorblind">
|
||||||
|
{{ 'pollGraphic.colorblindText' | translate }}
|
||||||
|
</span>
|
||||||
|
<div class="well">
|
||||||
|
work in progress to link data with poll config
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<canvas id="graph" width="100%" height="15em"></canvas>
|
||||||
|
</div>
|
@ -0,0 +1,3 @@
|
|||||||
|
#selectColorblind {
|
||||||
|
direction: rtl;
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { PollGraphicComponent } from './poll-graphic.component';
|
||||||
|
|
||||||
|
describe('PollGraphicComponent', () => {
|
||||||
|
let component: PollGraphicComponent;
|
||||||
|
let fixture: ComponentFixture<PollGraphicComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [PollGraphicComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(PollGraphicComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,111 @@
|
|||||||
|
import { Component, Inject, OnInit } from '@angular/core';
|
||||||
|
import { Chart } from 'chart.js';
|
||||||
|
import { DOCUMENT } from '@angular/common';
|
||||||
|
import { mockGraphConfig } from '../../../mocks/mock-graph';
|
||||||
|
import { ConfigService } from '../../../services/config.service';
|
||||||
|
import { mockPoll3 } from '../../../mocks/mock-poll3';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-poll-graphic',
|
||||||
|
templateUrl: './poll-graphic.component.html',
|
||||||
|
styleUrls: ['./poll-graphic.component.scss'],
|
||||||
|
})
|
||||||
|
export class PollGraphicComponent implements OnInit {
|
||||||
|
isColorblind = false;
|
||||||
|
pollConfigRetrieved: any = mockPoll3;
|
||||||
|
graphicConfig: any = mockGraphConfig;
|
||||||
|
preferred: any = 'rien';
|
||||||
|
yesList: number[] = [];
|
||||||
|
maybeList: number[] = [];
|
||||||
|
noList: number[] = [];
|
||||||
|
nbPoll = 0;
|
||||||
|
dateList: string[] = [];
|
||||||
|
|
||||||
|
constructor(@Inject(DOCUMENT) private document: any, private config: ConfigService) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.formatDataAnswers(this.graphicConfig);
|
||||||
|
this.isColorblind = false;
|
||||||
|
this.pollConfigRetrieved = new Chart(this.document.getElementById('graph'), {
|
||||||
|
type: 'horizontalBar',
|
||||||
|
data: {
|
||||||
|
labels: this.pollConfigRetrieved.choices.map((choice) => choice.name),
|
||||||
|
datasets: [
|
||||||
|
{
|
||||||
|
type: 'horizontalBar',
|
||||||
|
stack: 'Yes',
|
||||||
|
backgroundColor: '#429a00',
|
||||||
|
data: this.yesList,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'horizontalBar',
|
||||||
|
stack: 'Yes',
|
||||||
|
backgroundColor: '#f5a623',
|
||||||
|
data: this.maybeList,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'horizontalBar',
|
||||||
|
stack: 'No',
|
||||||
|
backgroundColor: '#cd0000',
|
||||||
|
data: this.noList,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
options: this.getSettedGraphOptions(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public toggleColorblind(): void {
|
||||||
|
this.isColorblind = !this.isColorblind;
|
||||||
|
}
|
||||||
|
|
||||||
|
public formatDataAnswers(poll): void {
|
||||||
|
// if (poll && poll.pollType === "date") {
|
||||||
|
this.initPollCounter();
|
||||||
|
poll.answers.forEach((response) => {
|
||||||
|
switch (response.text) {
|
||||||
|
case 'yes':
|
||||||
|
this.yesList[this.nbPoll - 1]++;
|
||||||
|
break;
|
||||||
|
case 'maybe':
|
||||||
|
this.maybeList[this.nbPoll - 1]++;
|
||||||
|
break;
|
||||||
|
case 'no':
|
||||||
|
this.noList[this.nbPoll - 1]++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
public initPollCounter(): void {
|
||||||
|
this.nbPoll++;
|
||||||
|
this.dateList[this.nbPoll - 1] = 'jeudi';
|
||||||
|
this.maybeList[this.nbPoll - 1] = 0;
|
||||||
|
this.yesList[this.nbPoll - 1] = 0;
|
||||||
|
this.noList[this.nbPoll - 1] = 0;
|
||||||
|
}
|
||||||
|
private getSettedGraphOptions(): any {
|
||||||
|
// TODO: create interfaces, or find another way to work. "any" return type should be removed.
|
||||||
|
return {
|
||||||
|
legend: { display: false },
|
||||||
|
scales: {
|
||||||
|
xAxes: [
|
||||||
|
{
|
||||||
|
gridLines: { drawBorder: false, display: false },
|
||||||
|
display: false,
|
||||||
|
stacked: true,
|
||||||
|
ticks: { beginAtZero: true, maxRotation: 0, minRotation: 0 },
|
||||||
|
},
|
||||||
|
],
|
||||||
|
yAxes: [
|
||||||
|
{
|
||||||
|
gridLines: { drawBorder: true, display: false },
|
||||||
|
display: true,
|
||||||
|
stacked: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
69
mocks/old-stuff/pages/resume/resume.component.html
Normal file
69
mocks/old-stuff/pages/resume/resume.component.html
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
<h1>Aperçu</h1>
|
||||||
|
<div class="card content">
|
||||||
|
<h2 class="hero-title title">
|
||||||
|
{{ config.title }}
|
||||||
|
</h2>
|
||||||
|
<div class="creation">
|
||||||
|
créé par
|
||||||
|
<i class="pseudo">
|
||||||
|
{{ config.myName }}
|
||||||
|
</i>
|
||||||
|
</div>
|
||||||
|
<div class="description">
|
||||||
|
<cite>
|
||||||
|
{{ config.description }}
|
||||||
|
</cite>
|
||||||
|
</div>
|
||||||
|
<section class="preview type-classic" *ngIf="config.pollType == 'classic'">
|
||||||
|
<ul>
|
||||||
|
<li markdown *ngFor="let questions of config.answers">
|
||||||
|
<img class="img-thumbnail" src="{{ questions.url }}" alt="image {{ questions.url }}" />
|
||||||
|
{{ questions.id + 1 }}. {{ questions.text }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
<section class="type-date" *ngIf="config.pollType !== 'classic'">
|
||||||
|
<i class="fa fa-clock-o" aria-hidden="true"></i>
|
||||||
|
<span class="well" *ngIf="'true' === config.allowSeveralHours">
|
||||||
|
{{ 'dates.multiple.different' | translate }}
|
||||||
|
</span>
|
||||||
|
<span class="well" *ngIf="'false' === config.allowSeveralHours">
|
||||||
|
{{ 'dates.multiple.identical' | translate }}
|
||||||
|
</span>
|
||||||
|
<div *ngFor="let choice of config.dateList; index as id" class="date-choice">
|
||||||
|
<div class="only-one-slice" *ngIf="!choice.timeList.length">
|
||||||
|
<i class="fa fa-square-o" aria-hidden="true"></i>
|
||||||
|
</div>
|
||||||
|
{{ choice.literal }}
|
||||||
|
|
||||||
|
<!-- CASE different slices of the day-->
|
||||||
|
<div *ngIf="'true' === config.allowSeveralHours" class="several-times">
|
||||||
|
<div *ngFor="let time of choice.timeList; index as idTime" class="time-choice">
|
||||||
|
{{ idTime }})
|
||||||
|
<i class="fa fa-square-o" aria-hidden="true"></i>
|
||||||
|
{{ time.literal }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- CASE all dates having the same slices of the day-->
|
||||||
|
<div *ngIf="'false' === config.allowSeveralHours" class="same-times">
|
||||||
|
<div *ngFor="let time of config.timeList" class="time-choice">
|
||||||
|
<i class="fa fa-square-o" aria-hidden="true"></i>
|
||||||
|
{{ time.literal }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button routerLink="../visibility" class="btn btn--primary btn--full">
|
||||||
|
C'est parfait!
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div class="back">
|
||||||
|
<a *ngIf="config.pollType == 'classic'" routerLink="../answers" class="prev">
|
||||||
|
Retour
|
||||||
|
</a>
|
||||||
|
<a *ngIf="config.pollType == 'dates'" routerLink="../date" class="prev">
|
||||||
|
Retour
|
||||||
|
</a>
|
||||||
|
</div>
|
9
mocks/old-stuff/pages/resume/resume.component.scss
Normal file
9
mocks/old-stuff/pages/resume/resume.component.scss
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
.card {
|
||||||
|
box-shadow: 0px 0px 0.5em #ccc;
|
||||||
|
padding: 2em;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.time-choice {
|
||||||
|
margin-left: 3em;
|
||||||
|
}
|
24
mocks/old-stuff/pages/resume/resume.component.spec.ts
Normal file
24
mocks/old-stuff/pages/resume/resume.component.spec.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { ResumeComponent } from './resume.component';
|
||||||
|
|
||||||
|
describe('ResumeComponent', () => {
|
||||||
|
let component: ResumeComponent;
|
||||||
|
let fixture: ComponentFixture<ResumeComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ResumeComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(ResumeComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
15
mocks/old-stuff/pages/resume/resume.component.ts
Normal file
15
mocks/old-stuff/pages/resume/resume.component.ts
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import { Component } from '@angular/core';
|
||||||
|
import { BaseComponent } from '../example/base-page/base.component';
|
||||||
|
import { ConfigService } from '../../services/config.service';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-resume',
|
||||||
|
templateUrl: './resume.component.html',
|
||||||
|
styleUrls: ['./resume.component.scss'],
|
||||||
|
})
|
||||||
|
export class ResumeComponent extends BaseComponent {
|
||||||
|
constructor(public config: ConfigService, private router: Router) {
|
||||||
|
super(config);
|
||||||
|
}
|
||||||
|
}
|
164
mocks/old-stuff/pages/visibility/visibility.component.html
Normal file
164
mocks/old-stuff/pages/visibility/visibility.component.html
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
<h1 i18n>
|
||||||
|
{{ 'visibility.top_txt' | translate }}
|
||||||
|
</h1>
|
||||||
|
<section class="answers">
|
||||||
|
<h2>
|
||||||
|
{{ 'visibility.title' | translate }}
|
||||||
|
</h2>
|
||||||
|
<span>
|
||||||
|
{{ 'visibility.visibility_want' | translate }}
|
||||||
|
</span>
|
||||||
|
<select name="visible_people" id="visible_people" [(ngModel)]="config.visibility">
|
||||||
|
<option value="link_only">
|
||||||
|
{{ 'visibility.visibility_link' | translate }}
|
||||||
|
</option>
|
||||||
|
<option value="only_me">
|
||||||
|
{{ 'visibility.visibility_nobody' | translate }}
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
|
<span>
|
||||||
|
{{ 'visibility.visibility_see' | translate }}
|
||||||
|
</span>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="possible_votes">
|
||||||
|
<h2>
|
||||||
|
{{ 'visibility.votes' | translate }}
|
||||||
|
</h2>
|
||||||
|
<label for="votes">
|
||||||
|
{{ 'visibility.votes_possible' | translate }}
|
||||||
|
</label>
|
||||||
|
<select name="votes" id="votes" [(ngModel)]="config.voteChoices">
|
||||||
|
<option value="only_yes">
|
||||||
|
{{ 'visibility.votes_possible_single' | translate }}
|
||||||
|
</option>
|
||||||
|
<option value="normal">
|
||||||
|
{{ 'visibility.votes_possible_normal' | translate }}
|
||||||
|
</option>
|
||||||
|
<option value="full">
|
||||||
|
{{ 'visibility.votes_possible_full' | translate }}
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
|
</section>
|
||||||
|
<section class="expiracy">
|
||||||
|
<label for="expirationDate">
|
||||||
|
{{ 'visibility.archiving' | translate }}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="date" id="expirationDate" [(ngModel)]="config.expirationDate" />
|
||||||
|
<div class="modification">
|
||||||
|
<label for="modificationAbility">
|
||||||
|
{{ 'visibility.archiving_start' | translate }}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select name="modificationAbility" id="modificationAbility" [(ngModel)]="config.canModifyAnswers">
|
||||||
|
<option value="true">
|
||||||
|
{{ 'visibility.archiving_can' | translate }}
|
||||||
|
</option>
|
||||||
|
<option value="false">
|
||||||
|
{{ 'visibility.archiving_can_not' | translate }}
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
|
<span *ngIf="config.canModifyAnswers == false">
|
||||||
|
{{ 'visibility.archiving_end_not' | translate }}
|
||||||
|
</span>
|
||||||
|
<span class="can_modify_votes" *ngIf="config.canModifyAnswers == true">
|
||||||
|
<label for="modificationScope">
|
||||||
|
{{ 'visibility.archiving_end' | translate }}
|
||||||
|
</label>
|
||||||
|
<span *ngIf="false == !!config.canModifyAnswers">
|
||||||
|
{{ 'visibility.modfiy_their' | translate }}
|
||||||
|
</span>
|
||||||
|
<select
|
||||||
|
name="modificationScope"
|
||||||
|
id="modificationScope"
|
||||||
|
*ngIf="true == !!config.canModifyAnswers"
|
||||||
|
[(ngModel)]="config.whoCanChangeAnswers"
|
||||||
|
[disabled]="false == !!config.canModifyAnswers"
|
||||||
|
>
|
||||||
|
<option value="self">
|
||||||
|
{{ 'visibility.modfiy_their' | translate }}
|
||||||
|
</option>
|
||||||
|
<option value="everybody">
|
||||||
|
{{ 'visibility.modfiy_everyone' | translate }}
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="access">
|
||||||
|
<h2 class="title">
|
||||||
|
{{ 'visibility.access' | translate }}
|
||||||
|
</h2>
|
||||||
|
<label for="url">
|
||||||
|
{{ 'visibility.access_url' | translate }}
|
||||||
|
<br />
|
||||||
|
{{ 'visibility.access_url_key' | translate }}
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
<input type="name" class="input-lg" name="url" id="url" [(ngModel)]="config.customUrl" />
|
||||||
|
|
||||||
|
<sub class="instructions">
|
||||||
|
{{ 'visibility.access_instructions' | translate }}
|
||||||
|
</sub>
|
||||||
|
<div class="preview-url">
|
||||||
|
<a [href]="'/vote/poll/custom_url/' + config.customUrl">
|
||||||
|
{{ '/vote/poll/custom_url/' + config.customUrl }}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<label for="passwordAccess">
|
||||||
|
{{ 'visibility.access_want' | translate }}
|
||||||
|
</label>
|
||||||
|
<select name="passwordAccess" id="passwordAccess" [(ngModel)]="config.passwordAccess">
|
||||||
|
<option value="0"> {{ 'visibility.access_want_no' | translate }}</option>
|
||||||
|
<option value="1"> {{ 'visibility.access_want_yes' | translate }}</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<label for="password">
|
||||||
|
{{ 'visibility.access_protect' | translate }}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<div class="enablepassword" *ngIf="config.passwordAccess == 1">
|
||||||
|
<input
|
||||||
|
type="password"
|
||||||
|
name="password"
|
||||||
|
id="password"
|
||||||
|
min="8"
|
||||||
|
*ngIf="!showCustomPassword"
|
||||||
|
[(ngModel)]="config.password"
|
||||||
|
/>
|
||||||
|
<input
|
||||||
|
type="name"
|
||||||
|
name="password_visible"
|
||||||
|
id="password_visible"
|
||||||
|
min="8"
|
||||||
|
*ngIf="showCustomPassword"
|
||||||
|
[(ngModel)]="config.password"
|
||||||
|
/>
|
||||||
|
<button
|
||||||
|
(click)="showCustomPassword = !showCustomPassword"
|
||||||
|
[disabled]="!config.password"
|
||||||
|
class="btn btn--default"
|
||||||
|
>
|
||||||
|
<i class="fa fa-eye" aria-hidden="true"></i>
|
||||||
|
{{ 'visibility.see_pass' | translate }}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<button (click)="submitCreationAndGoToEnd()" class="btn btn--primary btn--full" i18n="@@confirm">
|
||||||
|
{{ 'visibility.validate_btn' | translate }}
|
||||||
|
<ng-container *ngIf="!config.loading">
|
||||||
|
<i class="fa fa-paper-plane" aria-hidden="true"></i>
|
||||||
|
</ng-container>
|
||||||
|
<span class="loading" *ngIf="config.loading">
|
||||||
|
<i class="fa fa-refresh fa-spin fa-fw" aria-hidden="true"></i>
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div class="back">
|
||||||
|
<a routerLink="../answers" class="prev">
|
||||||
|
Retour
|
||||||
|
</a>
|
||||||
|
</div>
|
@ -0,0 +1,5 @@
|
|||||||
|
:host {
|
||||||
|
h2 {
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { VisibilityComponent } from './visibility.component';
|
||||||
|
|
||||||
|
describe('VisibilityComponent', () => {
|
||||||
|
let component: VisibilityComponent;
|
||||||
|
let fixture: ComponentFixture<VisibilityComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [VisibilityComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(VisibilityComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
34
mocks/old-stuff/pages/visibility/visibility.component.ts
Normal file
34
mocks/old-stuff/pages/visibility/visibility.component.ts
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
import { Location } from '@angular/common';
|
||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
|
||||||
|
import { environment } from '../../../../src/environments/environment';
|
||||||
|
import { PollUtilitiesService } from '../../../../src/app/core/services/poll.utilities.service';
|
||||||
|
import { ConfigService } from '../../services/config.service';
|
||||||
|
import { BaseComponent } from '../example/base-page/base.component';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-visibility',
|
||||||
|
templateUrl: './visibility.component.html',
|
||||||
|
styleUrls: ['./visibility.component.scss'],
|
||||||
|
})
|
||||||
|
export class VisibilityComponent extends BaseComponent implements OnInit {
|
||||||
|
public location: Location;
|
||||||
|
public showCustomPassword = false;
|
||||||
|
public baseUrl = environment.api.baseHref;
|
||||||
|
|
||||||
|
constructor(public config: ConfigService, public utils: PollUtilitiesService) {
|
||||||
|
super(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.config.customUrl = 'un custom_url';
|
||||||
|
this.config.expirationDate = this.config
|
||||||
|
.addDaysToDate(this.config.expiracyDateDefaultInDays, new Date())
|
||||||
|
.toISOString()
|
||||||
|
.substring(0, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
public submitCreationAndGoToEnd(): void {
|
||||||
|
this.config.createPoll();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
<div *ngIf="config.currentPoll" class="list-of-choices">
|
||||||
|
<div *ngFor="let choice of config.currentPoll.choices">
|
||||||
|
<app-voting-choice
|
||||||
|
[choice]="choice"
|
||||||
|
[choices_count]="config.currentPoll.choices_count"
|
||||||
|
[pollIsSpecialDate]="config.currentPoll.poll.kind == 'date'"
|
||||||
|
[poll]="config.currentPoll"
|
||||||
|
></app-voting-choice>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="bar-votestack">
|
||||||
|
<button
|
||||||
|
class="btn btn-block submit-votestack"
|
||||||
|
(click)="config.addVote()"
|
||||||
|
[disabled]="!config.myTempVoteStack"
|
||||||
|
[ngClass]="{ 'btn--primary': config.myTempVoteStack }"
|
||||||
|
*ngIf="!config.myVoteStack || !config.myVoteStack.id"
|
||||||
|
>
|
||||||
|
<i class="fa fa-paper-plane" aria-hidden="true"></i> Envoyer
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="btn btn--primary btn-block submit-votestack update"
|
||||||
|
(click)="config.updateVote(config.myVoteStack)"
|
||||||
|
*ngIf="config.myVoteStack && config.myVoteStack.id"
|
||||||
|
>
|
||||||
|
<i class="fa fa-edit" aria-hidden="true"></i> Mettre à jour
|
||||||
|
</button>
|
||||||
|
</div>
|
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { ChoicesListComponent } from './choices-list.component';
|
||||||
|
|
||||||
|
describe('ChoicesListComponent', () => {
|
||||||
|
let component: ChoicesListComponent;
|
||||||
|
let fixture: ComponentFixture<ChoicesListComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ChoicesListComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(ChoicesListComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,11 @@
|
|||||||
|
import { Component } from '@angular/core';
|
||||||
|
import { ConfigService } from '../../../services/config.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-choices-list',
|
||||||
|
templateUrl: './choices-list.component.html',
|
||||||
|
styleUrls: ['./choices-list.component.scss'],
|
||||||
|
})
|
||||||
|
export class ChoicesListComponent {
|
||||||
|
constructor(public config: ConfigService) {}
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
<section class="name">
|
||||||
|
<label for="name">
|
||||||
|
<i class="fa fa-user" aria-hidden="true"></i>
|
||||||
|
Votre nom :</label
|
||||||
|
>
|
||||||
|
<input type="text" name="name" id="name" [(ngModel)]="config.myName" />
|
||||||
|
<input type="text" name="name" id="email" [(ngModel)]="config.myEmail" />
|
||||||
|
<i class="fa fa-envelope" aria-hidden="true"></i>
|
||||||
|
</section>
|
||||||
|
<div class="comments" id="comments">
|
||||||
|
<h2 class="margin-top-x7">Laisser un commentaire</h2>
|
||||||
|
<label for="crname">Votre nom :</label>
|
||||||
|
<input type="text" class="margin-btm-x3" name="crname" [(ngModel)]="config.myName" id="crname" />
|
||||||
|
<input type="text" name="cremail" id="email_comment" [(ngModel)]="config.myEmail" />
|
||||||
|
<label for="email_comment">
|
||||||
|
<i class="fa fa-envelope" aria-hidden="true"></i>
|
||||||
|
</label>
|
||||||
|
<div>
|
||||||
|
<label for="comment">Votre commentaire :</label>
|
||||||
|
<br />
|
||||||
|
<textarea name="comment" id="comment" [(ngModel)]="config.myComment"> </textarea>
|
||||||
|
</div>
|
||||||
|
<input
|
||||||
|
type="submit"
|
||||||
|
name="add-comment"
|
||||||
|
class="btn btn--primary btn--outline"
|
||||||
|
value="Ajouter mon commentaire"
|
||||||
|
(click)="config.addComment()"
|
||||||
|
/>
|
||||||
|
<div class="comments-part" *ngIf="config.currentPoll">
|
||||||
|
<app-voting-comment [comment]="c" *ngFor="let c of config.currentPoll.comments"> </app-voting-comment>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,41 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { CommentsListComponent } from './comments-list.component';
|
||||||
|
import { FormsModule } from '@angular/forms';
|
||||||
|
import { HttpClient, HttpClientModule } from '@angular/common/http';
|
||||||
|
import { BrowserModule } from '@angular/platform-browser';
|
||||||
|
import { CommonModule } from '@angular/common';
|
||||||
|
import { ConfirmationService, MessageService } from 'primeng';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
|
import { ConfigService } from '../../../services/config.service';
|
||||||
|
|
||||||
|
const routerSpy = jest.fn({ navigateByUrl: jest.fn() });
|
||||||
|
|
||||||
|
describe('CommentsListComponent', () => {
|
||||||
|
let component: CommentsListComponent;
|
||||||
|
let fixture: ComponentFixture<CommentsListComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [FormsModule, BrowserModule, CommonModule, HttpClientModule],
|
||||||
|
declarations: [CommentsListComponent],
|
||||||
|
providers: [
|
||||||
|
HttpClient,
|
||||||
|
MessageService,
|
||||||
|
ConfirmationService,
|
||||||
|
ConfigService,
|
||||||
|
{ provide: Router, useValue: routerSpy },
|
||||||
|
],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(CommentsListComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,11 @@
|
|||||||
|
import { Component } from '@angular/core';
|
||||||
|
import { ConfigService } from '../../../services/config.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-comments-list',
|
||||||
|
templateUrl: './comments-list.component.html',
|
||||||
|
styleUrls: ['./comments-list.component.scss'],
|
||||||
|
})
|
||||||
|
export class CommentsListComponent {
|
||||||
|
constructor(public config: ConfigService) {}
|
||||||
|
}
|
@ -0,0 +1,147 @@
|
|||||||
|
<div class="choicebox selection-{{ choice.answer }}">
|
||||||
|
<!-- add .choicebox--active to most voted -->
|
||||||
|
<button
|
||||||
|
*ngIf="showChangeChoicebutton"
|
||||||
|
class="btn btn--primary manage"
|
||||||
|
(click)="choice.simpleAnswer = !choice.simpleAnswer"
|
||||||
|
>
|
||||||
|
<i class="fa fa-cogs" aria-hidden="true"></i>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div class="choicebox__subject">
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column">
|
||||||
|
<div class="text title clickable" (click)="setAnswserTo('yes')">
|
||||||
|
{{ choice.text }}
|
||||||
|
</div>
|
||||||
|
<!-- TEXT CASE --><!--
|
||||||
|
<p class="choicebox__txt">
|
||||||
|
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nulla nobis nam culpa !
|
||||||
|
</p>
|
||||||
|
--><!-- TEXT CASE -->
|
||||||
|
|
||||||
|
<!-- IMG CASE -->
|
||||||
|
<img *ngIf="choice.url" class="choicebox__img" [src]="choice.url" alt="{{ choice.url }}" />
|
||||||
|
<!-- IMG CASE -->
|
||||||
|
|
||||||
|
<!-- DATE CASE -->
|
||||||
|
<div class="dates" *ngIf="pollIsSpecialDate">
|
||||||
|
<div class="choicebox__date">
|
||||||
|
{{ choice.date.date | date: 'EEE' }}
|
||||||
|
<span class="choicebox__day">{{ choice.date.date | date: 'dd' }}</span>
|
||||||
|
{{ choice.date.date | date: 'LLL' }}
|
||||||
|
</div>
|
||||||
|
<div class="choicebox__hour">
|
||||||
|
{{ choice.date.date | date: 'H:m' }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- DATE CASE -->
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<div class="choicebox__actions">
|
||||||
|
<!-- show only the yes check if the config is set to simpleAnswer -->
|
||||||
|
<!-- add .choicebox__btn--active to selected <button> -->
|
||||||
|
<span class="simple-answer">
|
||||||
|
<button
|
||||||
|
class="choicebox__btn choicebox__btn--yes"
|
||||||
|
type="button"
|
||||||
|
[ngClass]="{ 'choicebox__btn--active': choice.answer === 'yes' }"
|
||||||
|
(click)="setAnswserTo('yes')"
|
||||||
|
>
|
||||||
|
<img src="../../../assets/img/check.svg" alt="" />
|
||||||
|
</button>
|
||||||
|
</span>
|
||||||
|
<span class="complex-answers" *ngIf="!simpleAnswer">
|
||||||
|
<button
|
||||||
|
class="choicebox__btn choicebox__btn--maybe"
|
||||||
|
type="button"
|
||||||
|
[ngClass]="{ 'choicebox__btn--active': choice.answer === 'maybe' }"
|
||||||
|
(click)="setAnswserTo('maybe')"
|
||||||
|
>
|
||||||
|
<img src="../../../assets/img/check-2.svg" alt="" />
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="choicebox__btn choicebox__btn--no"
|
||||||
|
type="button"
|
||||||
|
[ngClass]="{ 'choicebox__btn--active': choice.answer === 'no' }"
|
||||||
|
(click)="setAnswserTo('no')"
|
||||||
|
>
|
||||||
|
<img src="../../../assets/img/croix.svg" alt="" />
|
||||||
|
</button>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<div class="choicebox__count">
|
||||||
|
<div class="no-votes" *ngIf="!poll.choices_count.counts[choice.id]">
|
||||||
|
aucun vote
|
||||||
|
</div>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
aria-describedby="choicebox-tooltip"
|
||||||
|
class="choicebox__votes"
|
||||||
|
*ngIf="poll.choices_count && choice && poll.choices_count.counts[choice.id]"
|
||||||
|
>
|
||||||
|
<div class="choicebox__vote">
|
||||||
|
{{ poll.choices_count.counts[choice.id].yes.count }}
|
||||||
|
<img width="20px" height="21px" src="../../../assets/img/icon_voter_YES.svg" alt="" />
|
||||||
|
</div>
|
||||||
|
<div class="choicebox__vote">
|
||||||
|
{{ poll.choices_count.counts[choice.id].maybe.count }}
|
||||||
|
<img width="22px" height="24px" src="../../../assets/img/icon_voter_MAYBE.svg" alt="" />
|
||||||
|
</div>
|
||||||
|
<div class="choicebox__tooltip" id="choicebox-tooltip">
|
||||||
|
<div class="choicebox__tooltiplist">
|
||||||
|
<div class="choicebox__tooltipttl">
|
||||||
|
<img
|
||||||
|
width="20px"
|
||||||
|
height="21px"
|
||||||
|
src="../../../assets/img/icon_voter_YES.svg"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
{{ poll.choices_count.counts[choice.id].yes.count }} "Oui"
|
||||||
|
</div>
|
||||||
|
<!-- liste des gens qui ont répondu oui-->
|
||||||
|
<ul>
|
||||||
|
<li *ngFor="let pseudo of choices_count.counts[choice.id].yes.people">
|
||||||
|
{{ pseudo }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="choicebox__tooltiplist" *ngIf="!simpleAnswer">
|
||||||
|
<div class="choicebox__tooltipttl">
|
||||||
|
<img
|
||||||
|
width="22px"
|
||||||
|
height="24px"
|
||||||
|
src="../../../assets/img/icon_voter_MAYBE.svg"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
{{ poll.choices_count.counts[choice.id].maybe.count }} "Peut-être"
|
||||||
|
</div>
|
||||||
|
<ul>
|
||||||
|
<li *ngFor="let pseudo of choices_count.counts[choice.id].maybe.people">
|
||||||
|
{{ pseudo }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="choicebox__tooltiplist" *ngIf="!simpleAnswer">
|
||||||
|
<div class="choicebox__tooltipttl">
|
||||||
|
<i class="fa fa-times" aria-hidden="true"></i>
|
||||||
|
{{ poll.choices_count.counts[choice.id].no.count }} "Non"
|
||||||
|
</div>
|
||||||
|
<ul>
|
||||||
|
<li *ngFor="let pseudo of choices_count.counts[choice.id].no.people">
|
||||||
|
{{ pseudo }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
<div class="choicebox__countxt">
|
||||||
|
Choix ayant reçu le plus de votes
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,261 @@
|
|||||||
|
// ---------------------------------------------------------
|
||||||
|
// -- VOTE CHOICE COMPONENT
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
|
||||||
|
// -- IMPORTS
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
|
@import '../../../../../src/styles/variables';
|
||||||
|
|
||||||
|
// -- VARIABLES
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
|
$box-padding: 2rem;
|
||||||
|
$box-border-width: 0.6rem;
|
||||||
|
$btn-size: 5rem;
|
||||||
|
$btn-margin-x: 1rem;
|
||||||
|
$btn-margin-y: 1.5rem;
|
||||||
|
$btn-wrap-size: calc(2 * #{$btn-size} + 4 * #{$btn-margin-x});
|
||||||
|
$img-maxheight: 12rem;
|
||||||
|
$breakpoint-responsive: 640px; // à définir
|
||||||
|
|
||||||
|
// -- GLOBAL
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
|
.choicebox {
|
||||||
|
position: relative;
|
||||||
|
min-height: 10rem;
|
||||||
|
display: block;
|
||||||
|
padding: $box-padding $box-padding $box-padding calc(#{$box-padding} - #{$box-border-width});
|
||||||
|
border-left: $box-border-width solid transparent;
|
||||||
|
background-color: $white;
|
||||||
|
box-shadow: 0 0 0.6rem 0 rgba($black, 0.2);
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
padding-left: $box-padding;
|
||||||
|
border-left-color: $primary_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.selection-yes {
|
||||||
|
font-weight: 700;
|
||||||
|
background: #e9bdeb;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.choicebox__subject {
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
padding-right: $btn-wrap-size;
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
margin-bottom: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// -- DATE
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
|
.choicebox__date {
|
||||||
|
font-size: 1.8rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-transform: capitalize;
|
||||||
|
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.choicebox__day {
|
||||||
|
font-size: 2.4rem;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
// -- IMG
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
|
.choicebox__img {
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: $img-maxheight;
|
||||||
|
}
|
||||||
|
|
||||||
|
// -- TXT
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
|
.choicebox__txt {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 1.8rem;
|
||||||
|
min-width: 10em;
|
||||||
|
}
|
||||||
|
|
||||||
|
// -- VOTE BTNS
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
|
.choicebox__actions {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
max-width: $btn-wrap-size;
|
||||||
|
top: 50%;
|
||||||
|
right: $box-padding;
|
||||||
|
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
position: static;
|
||||||
|
max-width: none;
|
||||||
|
transform: none;
|
||||||
|
margin: 0 1.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.choicebox__btn {
|
||||||
|
width: $btn-size;
|
||||||
|
height: $btn-size;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin: $btn-margin-y $btn-margin-x;
|
||||||
|
border: 0.3rem solid #ccc9c9;
|
||||||
|
background-color: transparent;
|
||||||
|
border-radius: 50%;
|
||||||
|
cursor: pointer;
|
||||||
|
float: left;
|
||||||
|
|
||||||
|
&--maybe {
|
||||||
|
position: relative;
|
||||||
|
top: calc((#{$btn-size} + 2 * #{$btn-margin-y}) / 2);
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
top: auto;
|
||||||
|
left: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:focus,
|
||||||
|
&:active {
|
||||||
|
border-color: #bf83c2;
|
||||||
|
color: #bf83c2;
|
||||||
|
background: #000;
|
||||||
|
}
|
||||||
|
&--active {
|
||||||
|
border-color: #bf83c2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// -- VOTE COUNT
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
|
.choicebox__count {
|
||||||
|
position: relative;
|
||||||
|
padding-right: $btn-wrap-size;
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
text-align: right;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.choicebox__votes {
|
||||||
|
border: 0;
|
||||||
|
padding: 0;
|
||||||
|
line-height: normal;
|
||||||
|
background-color: transparent;
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
padding: 1.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.choicebox__vote {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
|
||||||
|
& + .choicebox__vote {
|
||||||
|
margin-left: 1.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.choicebox__countxt {
|
||||||
|
display: none;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
|
||||||
|
.choicebox--active & {
|
||||||
|
display: block;
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// -- TOOLTIP
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
|
.choicebox__tooltip {
|
||||||
|
display: none;
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
position: absolute;
|
||||||
|
min-width: 18rem;
|
||||||
|
font-weight: normal;
|
||||||
|
top: 5rem;
|
||||||
|
left: 50%;
|
||||||
|
z-index: 1;
|
||||||
|
padding: 2rem;
|
||||||
|
border: 0.1rem solid rgba($black, 0.1);
|
||||||
|
background-color: $white;
|
||||||
|
text-align: left;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
&::after,
|
||||||
|
&::before {
|
||||||
|
position: absolute;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
bottom: 100%;
|
||||||
|
left: 50%;
|
||||||
|
content: ' ';
|
||||||
|
pointer-events: none;
|
||||||
|
border: solid transparent;
|
||||||
|
}
|
||||||
|
&::after {
|
||||||
|
margin-left: -1.5rem;
|
||||||
|
border-width: 1.5rem;
|
||||||
|
border-color: rgba($white, 0);
|
||||||
|
border-bottom-color: #fff;
|
||||||
|
}
|
||||||
|
&::before {
|
||||||
|
margin-left: -1.6rem;
|
||||||
|
border-width: 1.6rem;
|
||||||
|
border-color: rgba($black, 0);
|
||||||
|
border-bottom-color: rgba($black, 0.1);
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.choicebox__tooltiplist {
|
||||||
|
& + .choicebox__tooltiplist {
|
||||||
|
padding-left: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
max-height: 11rem;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.choicebox__tooltipttl {
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
font-size: 1.6rem;
|
||||||
|
font-weight: bold;
|
||||||
|
white-space: nowrap;
|
||||||
|
img {
|
||||||
|
margin-right: 0.5rem;
|
||||||
|
vertical-align: sub;
|
||||||
|
}
|
||||||
|
& ~ .choicebox__tooltipttl {
|
||||||
|
margin-top: 3rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,81 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { FormsModule } from '@angular/forms';
|
||||||
|
import { HttpClient, HttpClientModule } from '@angular/common/http';
|
||||||
|
import { BrowserModule } from '@angular/platform-browser';
|
||||||
|
import { CommonModule } from '@angular/common';
|
||||||
|
import { ConfirmationService, MessageService } from 'primeng';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
|
import { ConfigService } from '../../../services/config.service';
|
||||||
|
import { VotingChoiceComponent } from './voting-choice.component';
|
||||||
|
import { mockChoice } from '../../../mocks/choice';
|
||||||
|
import { mockPoll3 } from '../../../mocks/mock-poll3';
|
||||||
|
|
||||||
|
const routerSpy = jest.fn({ navigateByUrl: jest.fn() });
|
||||||
|
|
||||||
|
describe('VotingChoiceComponent', () => {
|
||||||
|
let component: VotingChoiceComponent;
|
||||||
|
let fixture: ComponentFixture<VotingChoiceComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [FormsModule, BrowserModule, CommonModule, HttpClientModule],
|
||||||
|
declarations: [VotingChoiceComponent],
|
||||||
|
providers: [
|
||||||
|
HttpClient,
|
||||||
|
MessageService,
|
||||||
|
ConfirmationService,
|
||||||
|
ConfigService,
|
||||||
|
{ provide: Router, useValue: routerSpy },
|
||||||
|
],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(VotingChoiceComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
component.choice = { ...mockChoice };
|
||||||
|
component.choices_count = mockPoll3.choices_count;
|
||||||
|
component.choice_id = mockChoice.id;
|
||||||
|
component.poll = mockPoll3.poll;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
it('should have nothing specified as an answer by default', () => {
|
||||||
|
expect(component.choice.answer).toBeFalsy();
|
||||||
|
});
|
||||||
|
it('should set answer to yes', () => {
|
||||||
|
component.setAnswserTo('yes');
|
||||||
|
expect(component.choice.answer).toBe('yes');
|
||||||
|
});
|
||||||
|
it('should set answer to maybe', () => {
|
||||||
|
component.setAnswserTo('maybe');
|
||||||
|
expect(component.choice.answer).toBe('maybe');
|
||||||
|
});
|
||||||
|
it('should set answer to no', () => {
|
||||||
|
component.setAnswserTo('no');
|
||||||
|
expect(component.choice.answer).toBe('no');
|
||||||
|
});
|
||||||
|
it('should set answer to no after 2 set on yes', () => {
|
||||||
|
component.setAnswserTo('yes');
|
||||||
|
component.setAnswserTo('yes');
|
||||||
|
expect(component.choice.answer).toBe('no');
|
||||||
|
});
|
||||||
|
it('should stay on maybe after 2 set on maybe', () => {
|
||||||
|
component.setAnswserTo('maybe');
|
||||||
|
component.setAnswserTo('maybe');
|
||||||
|
expect(component.choice.answer).toBe('maybe');
|
||||||
|
});
|
||||||
|
it('should stay on no after 2 set on no', () => {
|
||||||
|
component.setAnswserTo('no');
|
||||||
|
component.setAnswserTo('no');
|
||||||
|
expect(component.choice.answer).toBe('no');
|
||||||
|
});
|
||||||
|
it('should consider to have simple answer when allowedAnswers is only one answer long, which is yes', () => {
|
||||||
|
expect(component.poll.allowedAnswers[0]).toBe('yes');
|
||||||
|
expect(component.poll.allowedAnswers.length).toBe(1);
|
||||||
|
expect(component.simpleAnswer).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,64 @@
|
|||||||
|
import { Component, ElementRef, Input } from '@angular/core';
|
||||||
|
import { ConfigService } from '../../../services/config.service';
|
||||||
|
|
||||||
|
interface VoteChoice {
|
||||||
|
votes?: {
|
||||||
|
yes: number;
|
||||||
|
no: number;
|
||||||
|
maybe: number;
|
||||||
|
notAnswered: number;
|
||||||
|
};
|
||||||
|
name?: string;
|
||||||
|
date?: Date;
|
||||||
|
answer: 'yes' | 'no' | 'maybe' | null;
|
||||||
|
simpleAnswer?: boolean;
|
||||||
|
false; // enable if we display only a togglable "yes"
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* each vote choice takes a configuration from the container of all choices.
|
||||||
|
* this component is used to select a date choice, or a choice_label answer
|
||||||
|
*/
|
||||||
|
@Component({
|
||||||
|
selector: 'app-voting-choice',
|
||||||
|
templateUrl: './voting-choice.component.html',
|
||||||
|
styleUrls: ['./voting-choice.component.scss'],
|
||||||
|
})
|
||||||
|
export class VotingChoiceComponent {
|
||||||
|
public showChangeChoicebutton = false;
|
||||||
|
@Input() public choice: any;
|
||||||
|
@Input() public choices_count: any;
|
||||||
|
@Input() public choice_id: any;
|
||||||
|
@Input() public poll: any;
|
||||||
|
@Input() public simpleAnswer = true;
|
||||||
|
@Input() public pollIsSpecialDate = false;
|
||||||
|
|
||||||
|
constructor(private el: ElementRef, private config: ConfigService) {
|
||||||
|
if (this.poll && this.poll.allowedAnswers) {
|
||||||
|
this.simpleAnswer = this.poll.allowedAnswers.length == 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setAnswserTo(newAnswer: 'yes' | 'no' | 'maybe' | null) {
|
||||||
|
if (this.simpleAnswer) {
|
||||||
|
// only toggle yes to no
|
||||||
|
if (this.choice.answer && this.choice.answer === 'yes') {
|
||||||
|
this.choice.answer = 'no';
|
||||||
|
this.config.myTempVoteStack--;
|
||||||
|
} else {
|
||||||
|
this.choice.answer = newAnswer;
|
||||||
|
this.config.myTempVoteStack++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.choice.answer = newAnswer;
|
||||||
|
if (this.choice.answer !== newAnswer) {
|
||||||
|
if (newAnswer == 'maybe' || newAnswer == 'yes') {
|
||||||
|
this.config.myTempVoteStack++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.info('same answer as before');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.el.nativeElement.blur();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
<div class="comment">
|
||||||
|
<span class="cname"> {{ comment.pseudo }} </span>, le
|
||||||
|
<span class="date padding-btm-x1">
|
||||||
|
{{ comment.date.date }}
|
||||||
|
</span>
|
||||||
|
<blockquote>
|
||||||
|
<p class="text">
|
||||||
|
{{ comment.text }}
|
||||||
|
</p>
|
||||||
|
</blockquote>
|
||||||
|
</div>
|
@ -1,19 +1,19 @@
|
|||||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
import { ShortcutsHelpComponent } from './shortcuts-help.component';
|
import { VotingCommentComponent } from './voting-comment.component';
|
||||||
|
|
||||||
describe('ShortcutsHelpComponent', () => {
|
describe('VotingCommentComponent', () => {
|
||||||
let component: ShortcutsHelpComponent;
|
let component: VotingCommentComponent;
|
||||||
let fixture: ComponentFixture<ShortcutsHelpComponent>;
|
let fixture: ComponentFixture<VotingCommentComponent>;
|
||||||
|
|
||||||
beforeEach(async(() => {
|
beforeEach(async(() => {
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
declarations: [ShortcutsHelpComponent],
|
declarations: [VotingCommentComponent],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fixture = TestBed.createComponent(ShortcutsHelpComponent);
|
fixture = TestBed.createComponent(VotingCommentComponent);
|
||||||
component = fixture.componentInstance;
|
component = fixture.componentInstance;
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
});
|
});
|
@ -0,0 +1,15 @@
|
|||||||
|
import { Component, Input, OnInit } from '@angular/core';
|
||||||
|
import { mockComments } from '../../../mocks/mock-comments';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-voting-comment',
|
||||||
|
templateUrl: './voting-comment.component.html',
|
||||||
|
styleUrls: ['./voting-comment.component.scss'],
|
||||||
|
})
|
||||||
|
export class VotingCommentComponent implements OnInit {
|
||||||
|
@Input() comment = mockComments[0];
|
||||||
|
|
||||||
|
constructor() {}
|
||||||
|
|
||||||
|
ngOnInit(): void {}
|
||||||
|
}
|
@ -0,0 +1,2 @@
|
|||||||
|
<h1>Graphique</h1>
|
||||||
|
<app-poll-graphic></app-poll-graphic>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user