Compare commits

...

15 Commits

193 changed files with 1277 additions and 8274 deletions

1
.gitignore vendored
View File

@ -5,6 +5,7 @@
/tmp
/out-tsc/
documentation
/site/
# Only exists if Bazel was run
/bazel-out

View File

@ -60,6 +60,6 @@ build:
# artifacts:
# paths:
# - public
# expire_in: 30 dateList
# expire_in: 30 dateChoices
# only:
# - master

View File

@ -25,8 +25,6 @@
"assets": ["src/favicon.ico", "src/assets"],
"styles": [
"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",
"src/styles.scss"
],

551
docs/CHANGELOG.md Normal file
View File

@ -0,0 +1,551 @@
## 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 builds 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)

View File

@ -12,12 +12,10 @@ FR: Un logiciel libre de sondage fait par les contributeurs de l'association Fra
* Accesibility
* Licence GNU affero V3
# Framadate - funky version
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.
# Présentation
FR: Un logiciel libre de sondage fait par les contributeurs de l'association Framasoft, avec une API de backend en Symfony 5.
## Pour débuter - getting started
## Pour débuter
[lire la doc pour débuter votre Funky Framadate](GETTING_STARTED.md)
## Documentation
@ -59,7 +57,7 @@ notes-de-reunion)
# Exemple de maquette de la nouvelle version
![funky_framadate_maquette](uploads/535da7c3a5ce5fae67b2b497bdc4631d/funky_framadate_maquette.png)
![funky_framadate_maquette](img/framadate_funky_design.png)
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.1.

View File

@ -7,14 +7,15 @@ docs_dir: docs
# index.md
nav:
- Accueil:
- index.en.md
- index.fr.md
- en cours: TODO.md
- Accueil : index.en.md
- Accueil : index.fr.md
- en cours: TODO.md
- Guide utilisateur:
- user-guide/index.md
- LICENCE.md
- Guide général: user-guide/index.md
- License: user-guide/LICENCE.en.md
- Guide administrateur:
- Changelog: changelog.md
- Changelog Détaillé: ../../CHANGELOG.md
- Guide développeur:
- Démarrer: GETTING_STARTED.md
- Personnaliser: customisation.md
@ -24,7 +25,7 @@ nav:
- Angular: angular.md
- Traduction: cadrage/i18n.md
- Historique:
- Historique: history.md
- Historique: user-guide/history.md
- Spécifications: cadrage/specifications-fonctionnelles.md
- Réunions:
- Modèle vierge: reunions/0_blank_notes.md
@ -52,9 +53,9 @@ plugins:
subsection: "Sous section"
page title: "Page avec un titre traduite"
theme:
name: slate
nav_style: dark
#theme:
# name: slate
# nav_style: dark
extra:
# Default mkdocs-material alternate links for untranslated pages
# https://squidfunk.github.io/mkdocs-material/setup/changing-the-language/#site-language-selector

View File

@ -40,7 +40,7 @@ export class PollConfig {
myEmail: string = environment.production ? '' : 'tktest@tktest.com';
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 (dateList), or use the same hours for all dates
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
*/
allowSeveralHours = 'true';
// access
@ -63,7 +63,7 @@ export class PollConfig {
owner_modifier_token = ''; // key to change a vote stack
canModifyAnswers = true; // bool for the frontend selector
whoCanChangeAnswers = 'everybody'; // everybody, self, nobody (= just admin)
dateList: any = otherDefaultDates; // sets of dateList as strings, config to set identical time for dateList in a special dateList poll
dateList: any = otherDefaultDates; // sets of dateChoices as strings, config to set identical time for dateChoices in a special dateChoices poll
timeList: DateChoice[] = otherDefaultDates; // ranges of time expressed as strings
answers: PollAnswer[] = defaultAnswers;

View File

@ -1 +0,0 @@
{"__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"}]}}}}

View File

@ -1,49 +0,0 @@
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);
}
}

View File

@ -1 +0,0 @@
{"__symbolic":"module","version":1,"metadata":{},"exports":[{"from":"./module"},{"from":"./date-value-accessor"}]}

View File

@ -1,2 +0,0 @@
export * from './module';
export * from './date-value-accessor';

View File

@ -1 +0,0 @@
{"__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"}]}]}]}}}

View File

@ -1,8 +0,0 @@
import { NgModule } from '@angular/core';
import { DateValueAccessor } from './date-value-accessor';
@NgModule({
declarations: [DateValueAccessor],
exports: [DateValueAccessor],
})
export class DateValueAccessorModule {}

View File

@ -1,11 +0,0 @@
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,
};

View File

@ -1,4 +0,0 @@
{
"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éé"
}

View File

@ -1,4 +0,0 @@
{
"message": "anti flood déclenché",
"details": "votre deriner commentaire a été envoyé il y a moins de 5 secondes"
}

View File

@ -1,565 +0,0 @@
{
"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
}

View File

@ -1,48 +0,0 @@
{
"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": {}
}
}

View File

@ -1,22 +0,0 @@
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",
},
];

View File

@ -1,52 +0,0 @@
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',
},
],
};

View File

@ -1,529 +0,0 @@
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,
};

View File

@ -1,658 +0,0 @@
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',
},
],
},
};

View File

@ -1,44 +0,0 @@
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,
},
];

View File

@ -1,43 +0,0 @@
{
"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"
}
]
}
}

View File

@ -1,45 +0,0 @@
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 {}

View File

@ -1,78 +0,0 @@
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 {}

View File

@ -1,10 +0,0 @@
<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>

View File

@ -1,41 +0,0 @@
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;
}

View File

@ -1,24 +0,0 @@
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();
});
});

View File

@ -1,61 +0,0 @@
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);
// }
// );
}
}

View File

@ -1,76 +0,0 @@
<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>

View File

@ -1,24 +0,0 @@
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();
});
});

View File

@ -1,93 +0,0 @@
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();
}
}

View File

@ -1,71 +0,0 @@
<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>

View File

@ -1,27 +0,0 @@
.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;
}

View File

@ -1,24 +0,0 @@
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();
});
});

View File

@ -1,34 +0,0 @@
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;
}
}

View File

@ -1,155 +0,0 @@
<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>

View File

@ -1,43 +0,0 @@
: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;
}
}
}

View File

@ -1,24 +0,0 @@
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();
});
});

View File

@ -1,134 +0,0 @@
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.`);
}
}

View File

@ -1,56 +0,0 @@
<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 daccè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>

View File

@ -1,5 +0,0 @@
:host {
button {
margin-right: 1em;
}
}

View File

@ -1,24 +0,0 @@
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();
});
});

View File

@ -1,28 +0,0 @@
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() {}
}

View File

@ -1,4 +0,0 @@
<h1>Ce composant est celui de base pour les pages</h1>
<a routerLink="../end" class="btn btn-block" i18n="@@confirm">
{{ 'config.perfect' | translate }}
</a>

View File

@ -1,24 +0,0 @@
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();
});
});

View File

@ -1,29 +0,0 @@
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;
}
}

View File

@ -1,265 +0,0 @@
<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>

View File

@ -1,22 +0,0 @@
@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;
}
}
}

View File

@ -1,24 +0,0 @@
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();
});
});

View File

@ -1,16 +0,0 @@
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 {}
}

View File

@ -1,5 +0,0 @@
<!--ceci est la popup pour ajouter une image-->
<h1 i18n>
Images
</h1>
<a routerLink="../visibility" class="btn btn--primary">ok</a>

View File

@ -1,24 +0,0 @@
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();
});
});

View File

@ -1,16 +0,0 @@
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 {}
}

View File

@ -1,92 +0,0 @@
<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>

View File

@ -1,24 +0,0 @@
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();
});
});

View File

@ -1,17 +0,0 @@
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 {}
}

View File

@ -1,12 +0,0 @@
<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>

View File

@ -1,12 +0,0 @@
form {
display: flex;
flex-direction: column;
}
label {
font-weight: 600;
font-size: 18px;
}
h1 {
display: flex;
align-self: center;
}

View File

@ -1,24 +0,0 @@
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();
});
});

View File

@ -1,16 +0,0 @@
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 {}
}

View File

@ -1,59 +0,0 @@
<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>

View File

@ -1 +0,0 @@
@import '../../../../../src/styles/variables';

View File

@ -1,24 +0,0 @@
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();
});
});

View File

@ -1,70 +0,0 @@
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);
}
);
}
}
}

View File

@ -1,24 +0,0 @@
<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>

View File

@ -1,3 +0,0 @@
#selectColorblind {
direction: rtl;
}

View File

@ -1,24 +0,0 @@
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();
});
});

View File

@ -1,111 +0,0 @@
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,
},
],
},
};
}
}

View File

@ -1,69 +0,0 @@
<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>

View File

@ -1,9 +0,0 @@
.card {
box-shadow: 0px 0px 0.5em #ccc;
padding: 2em;
margin: 1em 0;
}
.time-choice {
margin-left: 3em;
}

View File

@ -1,24 +0,0 @@
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();
});
});

View File

@ -1,15 +0,0 @@
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);
}
}

View File

@ -1,164 +0,0 @@
<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>

View File

@ -1,5 +0,0 @@
:host {
h2 {
margin-top: 1em;
}
}

View File

@ -1,24 +0,0 @@
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();
});
});

View File

@ -1,34 +0,0 @@
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();
}
}

View File

@ -1,29 +0,0 @@
<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>

View File

@ -1,24 +0,0 @@
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();
});
});

View File

@ -1,11 +0,0 @@
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) {}
}

View File

@ -1,33 +0,0 @@
<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>

View File

@ -1,41 +0,0 @@
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();
});
});

View File

@ -1,11 +0,0 @@
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) {}
}

View File

@ -1,147 +0,0 @@
<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>

View File

@ -1,261 +0,0 @@
// ---------------------------------------------------------
// -- 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;
}
}
}

View File

@ -1,81 +0,0 @@
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();
});
});

View File

@ -1,64 +0,0 @@
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();
}
}

View File

@ -1,11 +0,0 @@
<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>

View File

@ -1,15 +0,0 @@
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 {}
}

View File

@ -1,2 +0,0 @@
<h1>Graphique</h1>
<app-poll-graphic></app-poll-graphic>

View File

@ -1,24 +0,0 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { VotingGraphComponent } from './voting-graph.component';
describe('VotingGraphComponent', () => {
let component: VotingGraphComponent;
let fixture: ComponentFixture<VotingGraphComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [VotingGraphComponent],
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(VotingGraphComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

Some files were not shown because too many files have changed in this diff Show More