mirror of
https://framagit.org/framasoft/framadate/funky-framadate-front.git
synced 2023-08-25 13:53:14 +02:00
Compare commits
9 Commits
f6ce22480c
...
4fefa3340c
Author | SHA1 | Date | |
---|---|---|---|
4fefa3340c | |||
a99290186c | |||
003f27ae82 | |||
5c7aac3a53 | |||
|
52792ba647 | ||
08ab0482dd | |||
|
3838894614 | ||
b3833ec830 | |||
6e0202a5a4 |
2
.gitignore
vendored
2
.gitignore
vendored
@ -52,3 +52,5 @@ Thumbs.db
|
|||||||
|
|
||||||
# linter
|
# linter
|
||||||
.eslintcache
|
.eslintcache
|
||||||
|
|
||||||
|
.ztr-directory
|
||||||
|
@ -60,6 +60,6 @@ build:
|
|||||||
# artifacts:
|
# artifacts:
|
||||||
# paths:
|
# paths:
|
||||||
# - public
|
# - public
|
||||||
# expire_in: 30 days
|
# expire_in: 30 dateList
|
||||||
# only:
|
# only:
|
||||||
# - master
|
# - master
|
||||||
|
543
CHANGELOG.md
543
CHANGELOG.md
@ -1 +1,542 @@
|
|||||||
# Changelog
|
## v0.5.0 (2021-05-04)
|
||||||
|
|
||||||
|
* :zap: remove generated documentation from compodoc [View](https://bitbucket.org/projects/test/repos/my-project/commits/f358120516bbf027e53758c93a581f93bed3d10a)
|
||||||
|
* :book: merge documentation from the wiki in the folder doc [View](https://bitbucket.org/projects/test/repos/my-project/commits/c689a679e21e6e8fd4efff71ef95d555f9c59d82)
|
||||||
|
* :book: update contribute [View](https://bitbucket.org/projects/test/repos/my-project/commits/c4982267d2ae6980ef6f72694cb322ae8bec6092)
|
||||||
|
* :zap: ability to customize app title and app logo in header from environment vars. fixes #87 #88 #89. [View](https://bitbucket.org/projects/test/repos/my-project/commits/621101aa38e5732885aa184174cd1d97a157c49f)
|
||||||
|
* :book: move documentation to doc folder [View](https://bitbucket.org/projects/test/repos/my-project/commits/70acabb056c61da806f565927e063dba66e7592e)
|
||||||
|
* :book: DOC : desired feature added in doc [View](https://bitbucket.org/projects/test/repos/my-project/commits/14d2a109d30d29a1a83d616d3e543d0cdf4bc084)
|
||||||
|
* :alien: i18n header menu, :gears: splits routes, :fix: RED theme fix in switch [View](https://bitbucket.org/projects/test/repos/my-project/commits/b4f496b08dbd2bdea757b9f2feb1007a81d8b86e)
|
||||||
|
* hop [View](https://bitbucket.org/projects/test/repos/my-project/commits/6db96397ea4fc7735f4a921cd8a9a912dafa2221)
|
||||||
|
* remove some broken automation [View](https://bitbucket.org/projects/test/repos/my-project/commits/5f072fe3abee9c0b5cc5126a11188cd5b70a58c7)
|
||||||
|
* only send list of polls by email to user [View](https://bitbucket.org/projects/test/repos/my-project/commits/e5214fdd9757a207ee01a0e263c1ab63df1edc12)
|
||||||
|
* move dev menu slider and show it only in dev mode env [View](https://bitbucket.org/projects/test/repos/my-project/commits/6059533c3635684d8422c2bf1c12a975390af5b4)
|
||||||
|
* start form [View](https://bitbucket.org/projects/test/repos/my-project/commits/8cac3d18621c35f7f3d73fcc699017f04cefdc6b)
|
||||||
|
* add form array for choices [View](https://bitbucket.org/projects/test/repos/my-project/commits/d9301559ef99902c3901afd0ee4a6a5035e77b81)
|
||||||
|
* :hammer: test the build with gitlab CI [View](https://bitbucket.org/projects/test/repos/my-project/commits/41fd153991fb1e324664cd27b9c2d4aca8a4f408)
|
||||||
|
* add variables from env in footer [View](https://bitbucket.org/projects/test/repos/my-project/commits/b0026fabc471d34f718c8aff95fca2a33c0b3623)
|
||||||
|
* start combine choices array [View](https://bitbucket.org/projects/test/repos/my-project/commits/4bec5828b386b4be2d73837c97731997e1588106)
|
||||||
|
* dynamically add choices [View](https://bitbucket.org/projects/test/repos/my-project/commits/8c119739a72fc6767e46791c2341656f53e7fc04)
|
||||||
|
* add all config controls [View](https://bitbucket.org/projects/test/repos/my-project/commits/e5b8d5b65ec32f170610f0186ed08b6fc23a1568)
|
||||||
|
* multiple choices for creation [View](https://bitbucket.org/projects/test/repos/my-project/commits/fa534af3ab200835a16f38c2e7b5998cbadb45f6)
|
||||||
|
* :alien: i18n import po files from previous framadate version [View](https://bitbucket.org/projects/test/repos/my-project/commits/a5b0d2c2d45aa4b58fdd08669568dd7f22b5d795)
|
||||||
|
* :alien: i18n add extraction lib [View](https://bitbucket.org/projects/test/repos/my-project/commits/60eeddbf21a575e84f054afe5defe54e258bb54f)
|
||||||
|
* :bug: select lang wigthout lifecycle bug [View](https://bitbucket.org/projects/test/repos/my-project/commits/10c1930e4d5c4be1ec7d6af208dc939705020e89)
|
||||||
|
* reorder questions [View](https://bitbucket.org/projects/test/repos/my-project/commits/8df2b95c1e287ab7a3a4f0127b8ec616260126dc)
|
||||||
|
* translate homepage [View](https://bitbucket.org/projects/test/repos/my-project/commits/d07f51dd910ad243e030cfd1fdba041f8264d1e2)
|
||||||
|
* togglable advanced options [View](https://bitbucket.org/projects/test/repos/my-project/commits/d3042b3723839f6b4710b77024f0f0fb10a87455)
|
||||||
|
* add keybaord shortcuts on array for choices [View](https://bitbucket.org/projects/test/repos/my-project/commits/4769ecefc3b6b59887baec2625bd5e35f23f6554)
|
||||||
|
* :zap: more settings for admin form with time and answers groups [View](https://bitbucket.org/projects/test/repos/my-project/commits/82910a9aae0750c80b87a04bd1c6e6634e68f05b)
|
||||||
|
* add time to date func [View](https://bitbucket.org/projects/test/repos/my-project/commits/94162c796cf5016634eccdeb18fc132711055eb2)
|
||||||
|
* :alien: convert sentences from framadate1 to json files [View](https://bitbucket.org/projects/test/repos/my-project/commits/a4c2387e1257e9684147bb7af9184d4550fa2b8e)
|
||||||
|
* add sentences in fr and en from framadate 1 [View](https://bitbucket.org/projects/test/repos/my-project/commits/3700ede667e90a43eb39f301a396feacbe05d570)
|
||||||
|
* :art: add pictures from undraw, translate sentences on homepage [View](https://bitbucket.org/projects/test/repos/my-project/commits/04f04d622dea3f963273eb038bc1c99e2832f1ca)
|
||||||
|
* reuse automatic slug from poll config in form [View](https://bitbucket.org/projects/test/repos/my-project/commits/3306e7c29d4f811a6ba624595457768e8c237bcc)
|
||||||
|
* adding reodering of choices beginning [View](https://bitbucket.org/projects/test/repos/my-project/commits/1745762ba3125c7ad054284e4fd6b4020482d6f2)
|
||||||
|
* :zap: add api version config in env [View](https://bitbucket.org/projects/test/repos/my-project/commits/1167b692eaea2ffe711a7a56797ed3017624a184)
|
||||||
|
* add fields to config of poll [View](https://bitbucket.org/projects/test/repos/my-project/commits/4eef4c4220a4b8523e6f7a430afda12c563edaae)
|
||||||
|
* try to get the list of polls [View](https://bitbucket.org/projects/test/repos/my-project/commits/1b49231d924d0c3a69d43d5c02645b4d2621d50c)
|
||||||
|
* create success page and route [View](https://bitbucket.org/projects/test/repos/my-project/commits/03f7c49c519e2db062de3d64a1cfdd8c1f109e05)
|
||||||
|
* spacing buttons [View](https://bitbucket.org/projects/test/repos/my-project/commits/d4e5c614a9397fdd7feaa0dc6da1d1160ccd4c52)
|
||||||
|
* split of creation components [View](https://bitbucket.org/projects/test/repos/my-project/commits/84b69a1366dacb521d4295c99eb630f636429ac4)
|
||||||
|
* homepage texts [View](https://bitbucket.org/projects/test/repos/my-project/commits/2d9f1f7d40468d0b2ba3634e7cdd6cbf3f1a8118)
|
||||||
|
* home page reorder and statistics, todo component [View](https://bitbucket.org/projects/test/repos/my-project/commits/5bac37a7905ba1ccd16bab3568a366bf8b9d9090)
|
||||||
|
* link to static pages [View](https://bitbucket.org/projects/test/repos/my-project/commits/1717f738d19e65c22d91b1f429cde654fb677ad0)
|
||||||
|
* include advanced choices and toggle visibility of sub component [View](https://bitbucket.org/projects/test/repos/my-project/commits/feb0de8270204c31cbb92f6a6420644cc1a99e9e)
|
||||||
|
* ordering base fields [View](https://bitbucket.org/projects/test/repos/my-project/commits/f96dc1f3c44b413eef1b64b4ff9ea8abca9fc34a)
|
||||||
|
* link to base config [View](https://bitbucket.org/projects/test/repos/my-project/commits/2d49389d117b8060fd343e7815b0894e4413667d)
|
||||||
|
* add choices for the future [View](https://bitbucket.org/projects/test/repos/my-project/commits/237984c04073efa133ee2fd5ba18ee90a9e16a0e)
|
||||||
|
* harmonizing poll default properties with payload and advanced config [View](https://bitbucket.org/projects/test/repos/my-project/commits/2a4219e14941679da323d1fd066d6fb6ca62e6f9)
|
||||||
|
* testing ciphering page [View](https://bitbucket.org/projects/test/repos/my-project/commits/40c0c3888902b046c9ab9f65549c57abbff5a1c3)
|
||||||
|
* fill poll config default [View](https://bitbucket.org/projects/test/repos/my-project/commits/7140072ecc6d624e6e660cf694ea5d6b4b5c6376)
|
||||||
|
* patch kind of poll with patchvalue [View](https://bitbucket.org/projects/test/repos/my-project/commits/77cf4c6d04b5a7c7689e834dcc166dd5eca56b22)
|
||||||
|
* advanced button change color when active [View](https://bitbucket.org/projects/test/repos/my-project/commits/ce00a3ce695e7e6728bdeace31a66cc17359dcab)
|
||||||
|
* translate calendar contents, space options for days [View](https://bitbucket.org/projects/test/repos/my-project/commits/2edb828aa3a1e0d9e39f4abc6eefc0e0ef06c96b)
|
||||||
|
* visual sections for date selection [View](https://bitbucket.org/projects/test/repos/my-project/commits/de679721d1047d8ee7d780b23f0298b47af7bb21)
|
||||||
|
* drag and drop time interval [View](https://bitbucket.org/projects/test/repos/my-project/commits/7ca87e28b44887138b0b8b05bde47cca9024d990)
|
||||||
|
* display hour ranges [View](https://bitbucket.org/projects/test/repos/my-project/commits/5f4c2e04af08c896f3fb64d56157d007600f6f04)
|
||||||
|
* use crypto lib [View](https://bitbucket.org/projects/test/repos/my-project/commits/1ab5255bfa2aff83774132965842e357eb8494e4)
|
||||||
|
* add lib crypto [View](https://bitbucket.org/projects/test/repos/my-project/commits/4df2e00cbe228a19b10821be5025c0b11aeb27da)
|
||||||
|
* copy button [View](https://bitbucket.org/projects/test/repos/my-project/commits/760bde7e3069e6c2f84724b05c80c7260f7fc2a7)
|
||||||
|
* easy ciphering working with and without salt [View](https://bitbucket.org/projects/test/repos/my-project/commits/3e0c1ff3750a5f986dd850b6a6b765e19b8a1ad5)
|
||||||
|
* mixed salt for ciphering [View](https://bitbucket.org/projects/test/repos/my-project/commits/0885df23df39b20fa8ee16aa7c2b3fb1c13a8ec3)
|
||||||
|
* spacing dev menu button [View](https://bitbucket.org/projects/test/repos/my-project/commits/51de2b2e028305eabfdb9c6bb91a5758aa815344)
|
||||||
|
* add md5 lib to ciphering page [View](https://bitbucket.org/projects/test/repos/my-project/commits/d72e7763da7e60d551b3ee585555bfa83e6ddd11)
|
||||||
|
* listing char codes [View](https://bitbucket.org/projects/test/repos/my-project/commits/e5411ab425368ce6e3a7b024e8d9fb711e041018)
|
||||||
|
* compute entropy [View](https://bitbucket.org/projects/test/repos/my-project/commits/ddf5b40ef45290430f2c681ae0368ee2b98abecf)
|
||||||
|
* resize table for entropy [View](https://bitbucket.org/projects/test/repos/my-project/commits/e32db4983d014403c97e93a3faebb7ab2e318a59)
|
||||||
|
* compare entropy with generated pass [View](https://bitbucket.org/projects/test/repos/my-project/commits/e9a9d1a959b8141bdb56fe01d8d0ae7bcf2c8b06)
|
||||||
|
* chiffrement matrice ok [View](https://bitbucket.org/projects/test/repos/my-project/commits/73ad7426ee1f1b1b31f252ea30d16a810272d792)
|
||||||
|
* hop [View](https://bitbucket.org/projects/test/repos/my-project/commits/54ece76c7e916aa919d9e5abaca69efd7c12968d)
|
||||||
|
* fix types [View](https://bitbucket.org/projects/test/repos/my-project/commits/7b5cf59b9979f0da70af0f0ba7dd07c743ec851d)
|
||||||
|
* update env for prod [View](https://bitbucket.org/projects/test/repos/my-project/commits/3c3dddafa52f520658a70291b66fd42505aeee48)
|
||||||
|
* fix some production build warnings [View](https://bitbucket.org/projects/test/repos/my-project/commits/2993fc5cb5204bfd35ddc393b6805176e150461b)
|
||||||
|
* add stats [View](https://bitbucket.org/projects/test/repos/my-project/commits/2af45ae72708bec310febde7cbcf33020a1b83f0)
|
||||||
|
* using hash routes [View](https://bitbucket.org/projects/test/repos/my-project/commits/e63bbab75565370cdafe1c374bea97f5d777c71f)
|
||||||
|
* hide some components [View](https://bitbucket.org/projects/test/repos/my-project/commits/f3f2d6623bb1bc7aa8d36d2144ac46a47c98470a)
|
||||||
|
* choice template questions [View](https://bitbucket.org/projects/test/repos/my-project/commits/21040df287ccb46e9384273b6a352378a1d4ba76)
|
||||||
|
* date selector as question answers [View](https://bitbucket.org/projects/test/repos/my-project/commits/4a89b715a9e9a9f058c64f3384bd115a89170138)
|
||||||
|
* add theming in vars with blue variation [View](https://bitbucket.org/projects/test/repos/my-project/commits/b2806371585ba1d1810bfbb2edc977264fd6ba5d)
|
||||||
|
* default colors [View](https://bitbucket.org/projects/test/repos/my-project/commits/a744bf9931e472afd6a01bbb343c19a6fe095b03)
|
||||||
|
* setup theme comments [View](https://bitbucket.org/projects/test/repos/my-project/commits/2562b21d2ff9686d8a4cc35645f7ebed81093cd3)
|
||||||
|
* add fetching a poll with a pass hash [View](https://bitbucket.org/projects/test/repos/my-project/commits/3850f3811c135005131bdffef8cd760fa9cb9fb5)
|
||||||
|
* manage consultation path [View](https://bitbucket.org/projects/test/repos/my-project/commits/6cb32cb2e19276e28ee3d6c5bc7777a00edfc8ea)
|
||||||
|
* display de sondage de démo [View](https://bitbucket.org/projects/test/repos/my-project/commits/21aa634ce52beeab60bfc402178840f1f2eb0769)
|
||||||
|
* montrer consultation et préciser si aucun vote [View](https://bitbucket.org/projects/test/repos/my-project/commits/56273946c3f598e58df960a56756d877d443ece7)
|
||||||
|
* display title on poll page [View](https://bitbucket.org/projects/test/repos/my-project/commits/d84809d62a032dbe37d8da746fec12fc486a7fca)
|
||||||
|
* style on selected items in consultation page [View](https://bitbucket.org/projects/test/repos/my-project/commits/0c08e802c9a98d4182853092d615b4fd5f4994b1)
|
||||||
|
* scroll to top on route change [View](https://bitbucket.org/projects/test/repos/my-project/commits/74a928800edd8d67cfc428eb67d27aaddc33cffa)
|
||||||
|
* send form in dev mode, fill title demo [View](https://bitbucket.org/projects/test/repos/my-project/commits/215178efa9c6a3bc5e07d11b97dd0109ab356899)
|
||||||
|
* add comment on display [View](https://bitbucket.org/projects/test/repos/my-project/commits/078f63f742d29e5c1cb7426560047830f165ea97)
|
||||||
|
* export results added, models updates [View](https://bitbucket.org/projects/test/repos/my-project/commits/1e90d92ab9f6c25643600a254d032c486516a692)
|
||||||
|
* transmettre l'information d'expiration du sondage au front [View](https://bitbucket.org/projects/test/repos/my-project/commits/163b89b03ffc11c277f916379cb5631b0256d3af)
|
||||||
|
* fix models for backend update [View](https://bitbucket.org/projects/test/repos/my-project/commits/e45b490c2fdbdff37e5a252a478091b52b287612)
|
||||||
|
* key created_at for comment, format date [View](https://bitbucket.org/projects/test/repos/my-project/commits/2d3457cf6fa872fe277dcff3a43b93d8be5353a7)
|
||||||
|
* show counters on answers and favourite answer [View](https://bitbucket.org/projects/test/repos/my-project/commits/0abf924caedeebe008292c230dae3a2af40f028f)
|
||||||
|
* display details too [View](https://bitbucket.org/projects/test/repos/my-project/commits/9a4a72a24c781e24f773462c8978cf59ded6821b)
|
||||||
|
* info in modal [View](https://bitbucket.org/projects/test/repos/my-project/commits/729dac95993b4997eae4691bcfaec2630714a8aa)
|
||||||
|
* fixes for building in prod [View](https://bitbucket.org/projects/test/repos/my-project/commits/7a0061eeb1d2018857a78dcff9674df2076c0999)
|
||||||
|
* stack of vote relié au formulaire de commentaire [View](https://bitbucket.org/projects/test/repos/my-project/commits/620a7b99fac22a6809149d753410f5bf885c0570)
|
||||||
|
* set choices and toggle votes in votestack [View](https://bitbucket.org/projects/test/repos/my-project/commits/f1e6b5955ee16f4ec65828f6bd48930b606b879e)
|
||||||
|
* display stack answer and toggle fluently between answers to votes [View](https://bitbucket.org/projects/test/repos/my-project/commits/4464a0af2cae1c9c9c25c6b1762d28634c3b4207)
|
||||||
|
* default value of vote added [View](https://bitbucket.org/projects/test/repos/my-project/commits/cbc4bd8f5d85b0a6f1e3bc797c47564cee5c4e62)
|
||||||
|
* choice button refacto [View](https://bitbucket.org/projects/test/repos/my-project/commits/3abef619c8ce77cc1f9ba014a952fbb96456b01d)
|
||||||
|
* send stack of votes button linked to api [View](https://bitbucket.org/projects/test/repos/my-project/commits/7a83beae8e5ca64c21759b3337de0ecb30c06937)
|
||||||
|
* trying to send vot stack but getting CORS issue [View](https://bitbucket.org/projects/test/repos/my-project/commits/30d4adec373ae2714b25d46e704beef73785cfc0)
|
||||||
|
* use httpclient [View](https://bitbucket.org/projects/test/repos/my-project/commits/e61542b6521722eafafb989dd88fa482ae07caac)
|
||||||
|
* default backend to framadate demo api [View](https://bitbucket.org/projects/test/repos/my-project/commits/b2b8056b7eb35fef9de30adc7c897ee6c5d2d2a5)
|
||||||
|
* add good hash in route [View](https://bitbucket.org/projects/test/repos/my-project/commits/d5bc5777b787060dfaa84c1ed7599bff272b5507)
|
||||||
|
* move old stuff [View](https://bitbucket.org/projects/test/repos/my-project/commits/fdcb7327f0b65a4ce8c7ae6f8a5bec9f5592c026)
|
||||||
|
* rename utils services [View](https://bitbucket.org/projects/test/repos/my-project/commits/b9181b5b3fe6b7163ffefbb0bea3e70a186bee53)
|
||||||
|
* auto send vote in dev mode [View](https://bitbucket.org/projects/test/repos/my-project/commits/3a89645e66b9445e61bf67c50805b9682a538931)
|
||||||
|
* manage mobile menu, and add poll title to page title [View](https://bitbucket.org/projects/test/repos/my-project/commits/31f0f19a9ae2120ac3394414e79649a44ee2de14)
|
||||||
|
* nav disable default show [View](https://bitbucket.org/projects/test/repos/my-project/commits/78a88d3163f73a161649a0ed17d4038f458d5bcc)
|
||||||
|
* nav items for demos in mobile menu [View](https://bitbucket.org/projects/test/repos/my-project/commits/69f8eac147f413a1f7bbb9c2d2b12b6526e63419)
|
||||||
|
* change icons for answer [View](https://bitbucket.org/projects/test/repos/my-project/commits/9e4d5187b523891568387526e1a7cc749d6a5a44)
|
||||||
|
* toast message on error send vote stack [View](https://bitbucket.org/projects/test/repos/my-project/commits/765299e1c3ae69bebfbad281592d9460ef4f9aa4)
|
||||||
|
* creation poll style, fill DTO for creation [View](https://bitbucket.org/projects/test/repos/my-project/commits/585d3a215e62ee115d0bace3c5bc0c6f650c2b59)
|
||||||
|
* auto save on dev env [View](https://bitbucket.org/projects/test/repos/my-project/commits/12a41b502217ce8c2f0df9673ca7a21f80550409)
|
||||||
|
* flatten form fields [View](https://bitbucket.org/projects/test/repos/my-project/commits/d08bba4fcb4ffbb5b4b28cd948babc21059b8bfe)
|
||||||
|
* advanced fields flattened [View](https://bitbucket.org/projects/test/repos/my-project/commits/e405a09c78af01fdb02a0fa7b4f75fc92cee7c34)
|
||||||
|
* splitting date choices with a separator [View](https://bitbucket.org/projects/test/repos/my-project/commits/975997b7675876f5596e34533e50d76f1c6c8809)
|
||||||
|
* group display of days [View](https://bitbucket.org/projects/test/repos/my-project/commits/86c0ff815f824b9119d36482cd85fc668eccf7cb)
|
||||||
|
* ability to toggle answers on grouped choices [View](https://bitbucket.org/projects/test/repos/my-project/commits/16db2a69cf687e2f99b9faec96e87c4d89d06458)
|
||||||
|
* update url to copy after creation [View](https://bitbucket.org/projects/test/repos/my-project/commits/bfdb18b316ffaf614b58a33ebdb195d1e793cc0a)
|
||||||
|
* link function [View](https://bitbucket.org/projects/test/repos/my-project/commits/b2ee8ec668d252a23389780f977bba3c58a79512)
|
||||||
|
* hop [View](https://bitbucket.org/projects/test/repos/my-project/commits/dc382017a2ab64fddbe6ca6f31b8419f24e8c0b3)
|
||||||
|
* fix url public [View](https://bitbucket.org/projects/test/repos/my-project/commits/59cb917ea36ac9cb4b21fb2d93fe01bc067c8935)
|
||||||
|
* fix test kind [View](https://bitbucket.org/projects/test/repos/my-project/commits/ed13c98b99048078a9ff3bd23ff32ab34f68c349)
|
||||||
|
* hash routes re enabled [View](https://bitbucket.org/projects/test/repos/my-project/commits/d7a35e91edb3d6f75ddb0946d8d288b20627c925)
|
||||||
|
* fix get participation url [View](https://bitbucket.org/projects/test/repos/my-project/commits/9a013f6d2cd29832d98fa81352f39db0a12fe60c)
|
||||||
|
* better mix on creation of poll [View](https://bitbucket.org/projects/test/repos/my-project/commits/d40aa6a3ae0152f53da4f29379800ab146b8fc89)
|
||||||
|
* no auto send form [View](https://bitbucket.org/projects/test/repos/my-project/commits/c3026639948ce0b4adc5ef22704c076e79407fbd)
|
||||||
|
* fix deps to config prop [View](https://bitbucket.org/projects/test/repos/my-project/commits/e7343810d5612f5ce30d41536c5c9a1d77093d31)
|
||||||
|
* env message demo dans le header [View](https://bitbucket.org/projects/test/repos/my-project/commits/d222d88872012f4cf22c34da9370bb6d2cba5d71)
|
||||||
|
* home display stored polls [View](https://bitbucket.org/projects/test/repos/my-project/commits/1bfe747e4cd256a42bd4c17f9b25fc1c3175131a)
|
||||||
|
* more responsive menu header [View](https://bitbucket.org/projects/test/repos/my-project/commits/bf1df96dcdbdf15905a8db2d61716466c838cfd8)
|
||||||
|
* enable loading state in api creation, success page update [View](https://bitbucket.org/projects/test/repos/my-project/commits/a969b30a03bd6e2ab93d352b5fceccd8420b6983)
|
||||||
|
* add to local polls after creation, update poll [View](https://bitbucket.org/projects/test/repos/my-project/commits/10177d793bf0af056f96e4873b4bbfd12d7c0bee)
|
||||||
|
* fix icon [View](https://bitbucket.org/projects/test/repos/my-project/commits/f6b522748a3e78735926764580a08145def159de)
|
||||||
|
* display of success links [View](https://bitbucket.org/projects/test/repos/my-project/commits/1755f205ad41e6b10fa8b656746d65e578456bbc)
|
||||||
|
* update custom_url with title [View](https://bitbucket.org/projects/test/repos/my-project/commits/f1e5903d0aa2d444b9dd5dc1ecdf3f30e2b61f22)
|
||||||
|
* smaller uniq id in custom_url [View](https://bitbucket.org/projects/test/repos/my-project/commits/5d39b7aa3e5f045f4270729f6c6daa2cd9ea79a9)
|
||||||
|
* erasable button on first field [View](https://bitbucket.org/projects/test/repos/my-project/commits/6fdb56786aa1cbd33badb80d00184aefcf6b64bd)
|
||||||
|
* same time span for every day by default, clean config [View](https://bitbucket.org/projects/test/repos/my-project/commits/c0ca623885d923c873c7d5796f1f687dfa148f8e)
|
||||||
|
* display time slices [View](https://bitbucket.org/projects/test/repos/my-project/commits/af4dfacec9107678069b2dd909473ac68549a728)
|
||||||
|
* empty and reset time slices [View](https://bitbucket.org/projects/test/repos/my-project/commits/1d8aeb2f54711709cd6209fde3615c43e2d78598)
|
||||||
|
* display all on creation [View](https://bitbucket.org/projects/test/repos/my-project/commits/d7eac8d56c68923b74516d688eeea3d421201567)
|
||||||
|
* display fields errors [View](https://bitbucket.org/projects/test/repos/my-project/commits/9cd847be8f099509a55518b092b1d0645c1967ee)
|
||||||
|
* less logs for validation [View](https://bitbucket.org/projects/test/repos/my-project/commits/186e5e36da6f4b424df0e127d7f52980551ef787)
|
||||||
|
* separate choice from form [View](https://bitbucket.org/projects/test/repos/my-project/commits/f6ce22480cbd1fe1ed9e1bb0a038cc6df8fa2030)
|
||||||
|
|
||||||
|
|
||||||
|
## v0.4.0 (2020-06-26)
|
||||||
|
|
||||||
|
* Ajout du lien vers le rendu [View](https://bitbucket.org/projects/test/repos/my-project/commits/983c64a1b4f542d743ee8f1029a4ca8662a3df95)
|
||||||
|
* Pose les textes de la première page de la maquette [View](https://bitbucket.org/projects/test/repos/my-project/commits/e9a85fe44a505a0444d72ae43e0a6a2e8003da3e)
|
||||||
|
* Changement de la structure HTML de base, inspiré de https://github.com/DavidBruant/better-defaults [View](https://bitbucket.org/projects/test/repos/my-project/commits/57b023425107ff786381339dab09e0344e03eb26)
|
||||||
|
* Habillage minimum de l'accueil [View](https://bitbucket.org/projects/test/repos/my-project/commits/2ca0982f6ee7181e701680d9ee63108bc34028d3)
|
||||||
|
* Ajoute les pages statiques de la navigation [View](https://bitbucket.org/projects/test/repos/my-project/commits/fac4efab3c48c70a0527641f0504031878141502)
|
||||||
|
* Ajoute un script docker pour lancer un serveur localement pour développer sur la maquette [View](https://bitbucket.org/projects/test/repos/my-project/commits/e30135786a4f6c3d39588afa00d17491a9406d1d)
|
||||||
|
* Documente le processus pour lancer le projet localement [View](https://bitbucket.org/projects/test/repos/my-project/commits/caf4cf7d2c7dd4969929c6290ab311df44bf1eaf)
|
||||||
|
* Ajout du parcour vers le sondage classique [View](https://bitbucket.org/projects/test/repos/my-project/commits/a248b803079b2ae58d86e8fa1b3e2cdb57fd8f74)
|
||||||
|
* ajout des champs de formulaire dans la page notifications [View](https://bitbucket.org/projects/test/repos/my-project/commits/1cc8e6beb442d3b365b73f0be2f525ff9f1bcb0d)
|
||||||
|
* Création du fichier js [View](https://bitbucket.org/projects/test/repos/my-project/commits/cb07e90e63ae8ec4ab1f91fe01630f7cc0cd8770)
|
||||||
|
* Ajoute le lien vers les natural language form [View](https://bitbucket.org/projects/test/repos/my-project/commits/b3b9797e8cd437efefee1ae6028dba433d62874e)
|
||||||
|
* Bifurcation sur le sondate en fonction du choix [View](https://bitbucket.org/projects/test/repos/my-project/commits/0f6abfa7b9ceea6fdd0d17366e77ea3929b9beb0)
|
||||||
|
* Usage du localStorage [View](https://bitbucket.org/projects/test/repos/my-project/commits/affb5500e734c94aa6526d1e8106f3b849871160)
|
||||||
|
* Ajoute la ponctuation [View](https://bitbucket.org/projects/test/repos/my-project/commits/23902aca1fb69cd40556896be744bfbf053dd8b8)
|
||||||
|
* Affiche un texte par défaut, et propose une popup pour saisi [View](https://bitbucket.org/projects/test/repos/my-project/commits/053d24c158c6e55888f42262d481d6bfb30e8013)
|
||||||
|
* Changement du nom, sans javascript, ou avec [View](https://bitbucket.org/projects/test/repos/my-project/commits/bf23bee2827d9197b646168c1a6606c13f890ed4)
|
||||||
|
* Généralise l'usage du champs text [View](https://bitbucket.org/projects/test/repos/my-project/commits/105b98388573ba5d6a1abe91a9e5b67db51c9169)
|
||||||
|
* Embelli les deux champs texte de la fin de sondage [View](https://bitbucket.org/projects/test/repos/my-project/commits/3229d14993c61eeb595971191c6b86c76707bb9d)
|
||||||
|
* Embelli le champ texte de l'index [View](https://bitbucket.org/projects/test/repos/my-project/commits/44b60adba0ee9c5b6ac515a926d7f4960023ba32)
|
||||||
|
* Base de reflexion pour l'ajout d'option [View](https://bitbucket.org/projects/test/repos/my-project/commits/91b94e806f1572a096d655932f352c26540c312c)
|
||||||
|
* Deploy on funky [View](https://bitbucket.org/projects/test/repos/my-project/commits/0ec23c03d3d16bc5f0979f678e696bdfed4f63a0)
|
||||||
|
* Update .gitlab-ci.yml [View](https://bitbucket.org/projects/test/repos/my-project/commits/9a045b4608b87d85f3ace567042991dab7b85828)
|
||||||
|
* Update .gitlab-ci.yml [View](https://bitbucket.org/projects/test/repos/my-project/commits/8ecb77c322df2b3d331c8a60b3c61bd7ac797d9a)
|
||||||
|
* Update .gitlab-ci.yml [View](https://bitbucket.org/projects/test/repos/my-project/commits/5edd7c6cd5edfae997ec2e4cece9fc524e51cebe)
|
||||||
|
* give up on bash & alpine [View](https://bitbucket.org/projects/test/repos/my-project/commits/ee2dfb7002c1a553e123f58ff1b3a5b1df7f63f4)
|
||||||
|
* Recherche de sondate en deux temps [View](https://bitbucket.org/projects/test/repos/my-project/commits/55ca50890f7d132bb626811aa9e50cce24d5f996)
|
||||||
|
* Déplace la date plus haut dans la page des notif. [View](https://bitbucket.org/projects/test/repos/my-project/commits/4d8e493c7049fbb9299c2b93fe2e914518c88f4c)
|
||||||
|
* Selectionne les options d'un sondage dates [View](https://bitbucket.org/projects/test/repos/my-project/commits/d151724e87b20500d19c022fa3a8f90066dfa533)
|
||||||
|
* Ajoute des informations sur la page de validation [View](https://bitbucket.org/projects/test/repos/my-project/commits/23b43fe5345f9a8fe2b6e77531def3eabb8a8125)
|
||||||
|
* Ajoute une option image + lien [View](https://bitbucket.org/projects/test/repos/my-project/commits/cdbe0a12e16156ae2ab7a4a854fdb57dd806d644)
|
||||||
|
* Ajout d'un champ texte en cas de sondage classique [View](https://bitbucket.org/projects/test/repos/my-project/commits/45319fcfd65a784f8e312a621cf3d1faaccfac6b)
|
||||||
|
* changement de l'URL de demo [View](https://bitbucket.org/projects/test/repos/my-project/commits/d48879c8f651ac4cd288d9914903fcd9d34ab671)
|
||||||
|
* fix(#16): amélioration de l'affichage de la page dates [View](https://bitbucket.org/projects/test/repos/my-project/commits/d4ad832004e399a289c9fa960a30caf38e6b4570)
|
||||||
|
* fix(#3): amélioration du design des boutons [View](https://bitbucket.org/projects/test/repos/my-project/commits/7505340c037682cf2894079aed1177499a162542)
|
||||||
|
* fix(#4): proposition d'amélioration d'affichage des champs textes [View](https://bitbucket.org/projects/test/repos/my-project/commits/19905b208e224eb77127e664cbc6b54aeee2a5d1)
|
||||||
|
* fix(#5): amélioration de l'apparence du textarea [View](https://bitbucket.org/projects/test/repos/my-project/commits/b2c79980c3ef4047bf0a073fe73f5220e3ebf737)
|
||||||
|
* fix(#15): amélioration du design de la page validation [View](https://bitbucket.org/projects/test/repos/my-project/commits/08b4e8bed0123a363f4f7d4edc6f0a11fbce2074)
|
||||||
|
* changement de la taille de typo [View](https://bitbucket.org/projects/test/repos/my-project/commits/d99f3af9212c328a3b20d626ca542117dcc69e4a)
|
||||||
|
* amélioration de l'affichage de l'email [View](https://bitbucket.org/projects/test/repos/my-project/commits/f566c30ee129d736c48f7a7af404bf3e8b244d38)
|
||||||
|
* ajout du style de bouton primary [View](https://bitbucket.org/projects/test/repos/my-project/commits/0ffbdca9ad4495124c386ab84fd15c55214e6809)
|
||||||
|
* amélioration de récapitulatif [View](https://bitbucket.org/projects/test/repos/my-project/commits/925ad5a5575af5414457b50cc6944e41d6da2591)
|
||||||
|
* ajout d'une classe bold [View](https://bitbucket.org/projects/test/repos/my-project/commits/77329039772e1342c03d46431b3034757f919010)
|
||||||
|
* amélioration affichage champs email [View](https://bitbucket.org/projects/test/repos/my-project/commits/bf4ccd61643aea3bdfdf7502ab693569706e1edb)
|
||||||
|
* proposition affichage des dates [View](https://bitbucket.org/projects/test/repos/my-project/commits/e3be6ad85a8dcea0dde9c0621b253e96d2a46cb3)
|
||||||
|
* amélioration de l'affichage des icones [View](https://bitbucket.org/projects/test/repos/my-project/commits/de5e3604b7524952940dbc494f328f34737d1d94)
|
||||||
|
* amélioration de l'affichage des icones [View](https://bitbucket.org/projects/test/repos/my-project/commits/531fd91aef8a8852085bd55202192fab76aa8eda)
|
||||||
|
* Ajoute des dates, et les enregistres dans le localStorage [View](https://bitbucket.org/projects/test/repos/my-project/commits/8f309740c18e25586434e9095f51ab064c9a9587)
|
||||||
|
* Affiche le titre du sondage dans la page de validation [View](https://bitbucket.org/projects/test/repos/my-project/commits/b1ab16bd11195294e080ecbd7a903191be55cc6a)
|
||||||
|
* Récupère l'ancien framadate [View](https://bitbucket.org/projects/test/repos/my-project/commits/50e56a0396610ac4f970b7ecc1702222c1981421)
|
||||||
|
* propose un champe vide par défaut [View](https://bitbucket.org/projects/test/repos/my-project/commits/4a6b039fa974e2df5b7062ee3079873f33c3949a)
|
||||||
|
* Met à jour le readme [View](https://bitbucket.org/projects/test/repos/my-project/commits/e5a4cde537a40691fbe2ac5dd2bacd7ea59dba76)
|
||||||
|
* Utilise un sondage spécial date par défaut [View](https://bitbucket.org/projects/test/repos/my-project/commits/90c014222f5322ca34cdfeb5c8720cd30e69e966)
|
||||||
|
* revois la page suivante par defaut [View](https://bitbucket.org/projects/test/repos/my-project/commits/2c9d5fa912e2ceb2cb32e1ad573d898d88305a8f)
|
||||||
|
* affiche uniquement les options nécessaire pour les date [View](https://bitbucket.org/projects/test/repos/my-project/commits/18d649dab9201c33ce156f5450d2d68dba7d1a47)
|
||||||
|
* reformule le texte de la page des dates [View](https://bitbucket.org/projects/test/repos/my-project/commits/eb79e6161117d5155482249536f053e6e24c9589)
|
||||||
|
* affiche les horaires dans un sondage spécial dates [View](https://bitbucket.org/projects/test/repos/my-project/commits/a5f3e96ad190b6c19c6f84f57884cf3892c13a8f)
|
||||||
|
* ajoute un bouton pour ajouter des horaires [View](https://bitbucket.org/projects/test/repos/my-project/commits/9c27b43d3bbd17ece53edde92b4ea85334f66d1c)
|
||||||
|
* affiche le récapitulatif en fonction des dates qui ont été saisies [View](https://bitbucket.org/projects/test/repos/my-project/commits/f6ded6f5fa2df0eb957f6512b8772eb09e2f938b)
|
||||||
|
* passage à du plus joli [View](https://bitbucket.org/projects/test/repos/my-project/commits/b5581c7127d96ee75856242b076b1b4632dea8d4)
|
||||||
|
* Dossier screenshots pour voir l'avancement ! [View](https://bitbucket.org/projects/test/repos/my-project/commits/91460d407700f2e6feac19e97c8d9468aef83d23)
|
||||||
|
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/d6c81848ea028fc10d746dbd31f2434cece8f137)
|
||||||
|
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/f5cd418a5767dc70413be45285c34f5623c5117f)
|
||||||
|
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/018987e6ae0dad4b878baa828ffa50ce7b82b531)
|
||||||
|
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/3f80ba64ee15bd497699fafdd26e6b7a3c9540db)
|
||||||
|
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/a46d24f267463b31a27a16967de7d1928c813f77)
|
||||||
|
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/376f093a00f958979e09913cc708a69cca27fed2)
|
||||||
|
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/18b984d478d974df5cd5db47d9306c3c95a02a2e)
|
||||||
|
* ajoute un lien vers l'exmple de natural language form [View](https://bitbucket.org/projects/test/repos/my-project/commits/e22559a6462240b69cfc74f522bb183542743f5f)
|
||||||
|
* Restart from scratch [View](https://bitbucket.org/projects/test/repos/my-project/commits/39242f22dbf321461d49bbf47f87274219210626)
|
||||||
|
* removed useless files [View](https://bitbucket.org/projects/test/repos/my-project/commits/61f69c926e879604936f73e3fe4726dbd8ee5dda)
|
||||||
|
* :tada: initialize Angular version of Framdate funky front end [View](https://bitbucket.org/projects/test/repos/my-project/commits/40b1a7bbf9c67f85d21c4212a7af51f9cb98d07b)
|
||||||
|
* hop [View](https://bitbucket.org/projects/test/repos/my-project/commits/512d569c54ce255f329a6883b1ba1c0bd86ffc18)
|
||||||
|
* :zap: make routing, link data with poll config. :art: style sheets [View](https://bitbucket.org/projects/test/repos/my-project/commits/d5f71504dc66c12a0ec9df91b5fb6a646aa098fc)
|
||||||
|
* real example of config [View](https://bitbucket.org/projects/test/repos/my-project/commits/c048c35b9d6aad8664ecd2fb208f047a1ab3eefc)
|
||||||
|
* :zap: example of navigation [View](https://bitbucket.org/projects/test/repos/my-project/commits/42f229f686bcf61ea4d8e3c877847937a12ae16e)
|
||||||
|
* :zap: example of navigation [View](https://bitbucket.org/projects/test/repos/my-project/commits/46cce96dab991af2de358e66daadbff9dda5079d)
|
||||||
|
* :zap: rename components [View](https://bitbucket.org/projects/test/repos/my-project/commits/e238b0aceb1fb2776242ef74cba46b5d27feebd7)
|
||||||
|
* :zap: make pages components, split config of poll from service [View](https://bitbucket.org/projects/test/repos/my-project/commits/56aa09df3bb71342aafd31ce95cba6e2733d1767)
|
||||||
|
* :zap: make pages components and nav [View](https://bitbucket.org/projects/test/repos/my-project/commits/49f4b4c13b555e0498d7bc2c8770e446d2ec2968)
|
||||||
|
* :zap: sync answers [View](https://bitbucket.org/projects/test/repos/my-project/commits/d413774d3b473c5355e2a52f1d0f73efa90b3ab8)
|
||||||
|
* :zap: ability to add a new answer and focus [View](https://bitbucket.org/projects/test/repos/my-project/commits/488b9f677ac9048062304a55f9ad6d6ff5630444)
|
||||||
|
* :zap: all steps and demo page [View](https://bitbucket.org/projects/test/repos/my-project/commits/54c7c6568d2cba66d0088b5bd0b8f3c401645445)
|
||||||
|
* focus via injected document [View](https://bitbucket.org/projects/test/repos/my-project/commits/d9b81d3d8ef5001fd7e199afcd05051263b21973)
|
||||||
|
* Correcting routing at the end of the form [View](https://bitbucket.org/projects/test/repos/my-project/commits/504d8faddf5ff608e63e2081bbbc2ab880860632)
|
||||||
|
* add fonts folder [View](https://bitbucket.org/projects/test/repos/my-project/commits/3fa61053a53518c57ba142ffee180f1cf9c9732d)
|
||||||
|
* fix(styles files): improve styles folders [View](https://bitbucket.org/projects/test/repos/my-project/commits/74b991362aa181ac64fa2882cd5ed3a1142d1536)
|
||||||
|
* Ajouter un nouveau dossier [View](https://bitbucket.org/projects/test/repos/my-project/commits/c77792b0575902f8b52b80483808a672fbc1cf8c)
|
||||||
|
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/c0491a433b2556c917fcd0771b20bf0026ef07a4)
|
||||||
|
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/9a9450dc0dcf23b8931fea51ae90455947a95e87)
|
||||||
|
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/0c00813056699d552f5990f825dd9612fc5443ab)
|
||||||
|
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/51540252844a8019cde41f4137effa10546127d8)
|
||||||
|
* Ajouter un nouveau dossier [View](https://bitbucket.org/projects/test/repos/my-project/commits/04d6a1b430214853e235fad96c5d8b9707114063)
|
||||||
|
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/5cada8fc32beb844e0cd78a5bf3a084d10f2e05c)
|
||||||
|
* Téléverser un nouveau fichier [View](https://bitbucket.org/projects/test/repos/my-project/commits/c1bf0631571d25cb669288caab7c1a74f14fa9a8)
|
||||||
|
* :zap: change privacy of properties [View](https://bitbucket.org/projects/test/repos/my-project/commits/d5e5550c54102ca3e1ddf3988139f036a09bcd9a)
|
||||||
|
* :zap: page creation or retrieve start [#28] [View](https://bitbucket.org/projects/test/repos/my-project/commits/6532538da3dfc07b9fdd328a984b431868580a67)
|
||||||
|
* styling in mobile column [View](https://bitbucket.org/projects/test/repos/my-project/commits/56a7271325dde04724aa1648e4cb3433b56020d9)
|
||||||
|
* :zap: lien entre multiple dates et config [View](https://bitbucket.org/projects/test/repos/my-project/commits/d941d6bed86ed922667c9fd806709efc96e6c236)
|
||||||
|
* :art: style of cursor hovering buttons [View](https://bitbucket.org/projects/test/repos/my-project/commits/16e8ab4ec5d3fb2cd522ca890066a653f230939c)
|
||||||
|
* :zap: add my name input in first form [View](https://bitbucket.org/projects/test/repos/my-project/commits/8eecb506c3c448273a2d52fc7f28733b09e93717)
|
||||||
|
* Remove my editor config files [View](https://bitbucket.org/projects/test/repos/my-project/commits/4bb851640bba5054c282e97144d8916bc5aa1957)
|
||||||
|
* Add calendar component [View](https://bitbucket.org/projects/test/repos/my-project/commits/9dace55091d8f8d5cfe72764a2ac54d0fa1de2a8)
|
||||||
|
* added web fonts [View](https://bitbucket.org/projects/test/repos/my-project/commits/7fcd13f05a1d07be698cb40f6855c3181a2f169f)
|
||||||
|
* Modification de la page de création [View](https://bitbucket.org/projects/test/repos/my-project/commits/189f5915c17604a6ced866a98ee735fdf73dffe7)
|
||||||
|
* added bootstrap reboot as a CSS reset [View](https://bitbucket.org/projects/test/repos/my-project/commits/ce53ccf55f9370bc1da8202189497d9178a44c45)
|
||||||
|
* improved heading code [View](https://bitbucket.org/projects/test/repos/my-project/commits/918999178495e5541498a02a4b495bf3b324863f)
|
||||||
|
* Modification des liens [View](https://bitbucket.org/projects/test/repos/my-project/commits/13144d5b8c28986a450170f2421a34482b66da59)
|
||||||
|
* ordered links file + added sass [View](https://bitbucket.org/projects/test/repos/my-project/commits/5ae1aeabeb561bff94758b50b61e9d26c83480ad)
|
||||||
|
* improve markup, hide useless decortion for a and h1 in header [View](https://bitbucket.org/projects/test/repos/my-project/commits/c47e00a82481c8c0415b137b406623d0d63f9bd2)
|
||||||
|
* improve global display [View](https://bitbucket.org/projects/test/repos/my-project/commits/74285393d885870340ecb60a6d8b79f360abfaea)
|
||||||
|
* Adding basic date filling [View](https://bitbucket.org/projects/test/repos/my-project/commits/9031b60178bf2c4a25bc596161429fa6a24858c2)
|
||||||
|
* :art: organize fonts in folders [View](https://bitbucket.org/projects/test/repos/my-project/commits/2d03578a1d6fef9431a79950b1e24f13c71ce44c)
|
||||||
|
* :art: remove blue in links of the bootstrap lib, add strike line on create button [View](https://bitbucket.org/projects/test/repos/my-project/commits/07989e454fb4df951177831a0e3d793cbba54198)
|
||||||
|
* :art: striked button and icon style [View](https://bitbucket.org/projects/test/repos/my-project/commits/29bfe45acac4905a4f9df4f343993beebe9c6fee)
|
||||||
|
* :bug: remove page folder, refacto in pages folder for creation page [View](https://bitbucket.org/projects/test/repos/my-project/commits/8291f2d8de90b54f4bd6dac6d4384589f8eabdf8)
|
||||||
|
* fix(headings): moved h1 with border to component [View](https://bitbucket.org/projects/test/repos/my-project/commits/1753515797ddca6d20ee3464d73e0421332abdec)
|
||||||
|
* style(default): added font color [View](https://bitbucket.org/projects/test/repos/my-project/commits/e91c66eef42b7b614458e65cef9dd80660f0a836)
|
||||||
|
* worked on links [View](https://bitbucket.org/projects/test/repos/my-project/commits/f0da02371ddf0a46c3166ec9228a3f7a8e7603b6)
|
||||||
|
* style(hover): added hover color [View](https://bitbucket.org/projects/test/repos/my-project/commits/c3b9ddfb7221c5cba0ab9997fc715096d29df72d)
|
||||||
|
* Modify input's style [View](https://bitbucket.org/projects/test/repos/my-project/commits/7e4feb9350d39880d42505d6a80159d05a49f5f2)
|
||||||
|
* Fix password css object [View](https://bitbucket.org/projects/test/repos/my-project/commits/ecbf7878569c519c41b96001ca2198212f13a5c3)
|
||||||
|
* modifications sur les liens & les buttons [View](https://bitbucket.org/projects/test/repos/my-project/commits/435a1d58c90acdd6b373919387558de65bd922c3)
|
||||||
|
* Personalize p html balise [View](https://bitbucket.org/projects/test/repos/my-project/commits/b0ca964c7558c6589aa3cd9d4c4b543a07b9e48c)
|
||||||
|
* added list of elements [View](https://bitbucket.org/projects/test/repos/my-project/commits/8ac8b696aad5bf0358fdd06cbcdc8a6fea718979)
|
||||||
|
* worked a bit on display [View](https://bitbucket.org/projects/test/repos/my-project/commits/93b9908a407999324b50d85619cb185266fbebb0)
|
||||||
|
* worked on home [View](https://bitbucket.org/projects/test/repos/my-project/commits/807b6bc66020c279c4e7296d718579d6837bd671)
|
||||||
|
* added delete buttons [View](https://bitbucket.org/projects/test/repos/my-project/commits/c64f6b9ebe17554c500224784417471fb0f93ce5)
|
||||||
|
* added useful classes and comments [View](https://bitbucket.org/projects/test/repos/my-project/commits/58835864d32061c0d1e4c2da8cd00a98561f5b9f)
|
||||||
|
* corrected links background [View](https://bitbucket.org/projects/test/repos/my-project/commits/fcc770f82de0b47a81c8c74cdbd029e82f58005c)
|
||||||
|
* Add img [View](https://bitbucket.org/projects/test/repos/my-project/commits/00e3f00c9adecf6f93d8c3259b7cf71db3fe347a)
|
||||||
|
* select modify [View](https://bitbucket.org/projects/test/repos/my-project/commits/ccf37a85362d9f3a226d0a8e3721702a616ec2c0)
|
||||||
|
* minimal commit [View](https://bitbucket.org/projects/test/repos/my-project/commits/5f796b817a60eee9a7fc609cf00e73959e63209e)
|
||||||
|
* Add dropdown arrow [View](https://bitbucket.org/projects/test/repos/my-project/commits/2e1078c4e437372a8e5705709260cbb76e6264ac)
|
||||||
|
* :zap: format html, :alien: up translate file [View](https://bitbucket.org/projects/test/repos/my-project/commits/320c9504677d521a4011ec4f88c680b1b7177667)
|
||||||
|
* :zap: add pages [View](https://bitbucket.org/projects/test/repos/my-project/commits/018b1ce83eb84a74bafc35bc48fc3404338c384c)
|
||||||
|
* Change colors [View](https://bitbucket.org/projects/test/repos/my-project/commits/9996d954dd5adafd3951e2357ae35fad6f99784e)
|
||||||
|
* Add input borders [View](https://bitbucket.org/projects/test/repos/my-project/commits/1d6f1dc95580fb8432af93290b731c1e107ecea7)
|
||||||
|
* delete left border on textarea [View](https://bitbucket.org/projects/test/repos/my-project/commits/b763252d765360da96f29c827258b76e100be567)
|
||||||
|
* Change png to svg select image [View](https://bitbucket.org/projects/test/repos/my-project/commits/b091a190cf24785e78bce31086ce7f09aa527c64)
|
||||||
|
* change select padding [View](https://bitbucket.org/projects/test/repos/my-project/commits/bddc200cbdc44e0266eaa018c0d9f9a0dff5e8e0)
|
||||||
|
* change select padding [View](https://bitbucket.org/projects/test/repos/my-project/commits/e00dff4acb1a09f759779656af0a80e5d5e72718)
|
||||||
|
* remove placeholder [View](https://bitbucket.org/projects/test/repos/my-project/commits/ba4fad8a31660e5c0a761e7507d9ff7a6f858a0b)
|
||||||
|
* change home order text [View](https://bitbucket.org/projects/test/repos/my-project/commits/48e77024d54edfa950ed1cc89eab4110c830b8ff)
|
||||||
|
* added flex-line [View](https://bitbucket.org/projects/test/repos/my-project/commits/cb6979926d282129cee11c56b352e46a97c58f14)
|
||||||
|
* added wrap to flex-line [View](https://bitbucket.org/projects/test/repos/my-project/commits/ef9a0fe7704a18da5c5b4e75ee0839b53e6e70c3)
|
||||||
|
* changed content width [View](https://bitbucket.org/projects/test/repos/my-project/commits/53a550bdc1ce33f691bffa0cd40a579142dcea05)
|
||||||
|
* Change button style on home [View](https://bitbucket.org/projects/test/repos/my-project/commits/3be3bb44f1886e72a828662d267c090a477a0627)
|
||||||
|
* style answers page [View](https://bitbucket.org/projects/test/repos/my-project/commits/e0898ba3945b8617609bc1a1a24646e27d1713ee)
|
||||||
|
* add button [View](https://bitbucket.org/projects/test/repos/my-project/commits/132a7fabd3c089b84dd237d37c9902996d1f2427)
|
||||||
|
* Testing [View](https://bitbucket.org/projects/test/repos/my-project/commits/df859e02818f2ffe2b2e9340eae725d540fa0e23)
|
||||||
|
* :ambulance: change form-container to home component [View](https://bitbucket.org/projects/test/repos/my-project/commits/d2478c37a48bac56af35d0b91311a99bdd946913)
|
||||||
|
* :zap: all page components do extend basecomponent and its common config service [View](https://bitbucket.org/projects/test/repos/my-project/commits/8f8a258ecf65d8af5307acf5ed8d2b543c835aae)
|
||||||
|
* change link [View](https://bitbucket.org/projects/test/repos/my-project/commits/326f2731ff9caf811cab32062998cc62a6c116b6)
|
||||||
|
* merge with ng-init [View](https://bitbucket.org/projects/test/repos/my-project/commits/193468e66995309adf480db0c6cbbf4113c96bc2)
|
||||||
|
* Remove placeholder [View](https://bitbucket.org/projects/test/repos/my-project/commits/aab6ea801b81ee0aa8368483a2f15070ea574cf9)
|
||||||
|
* :alien: demo for i18n [View](https://bitbucket.org/projects/test/repos/my-project/commits/cc7b4661eefc6674e4e5b849b3b6cda2eb67bbe7)
|
||||||
|
* modify create or retrive page [View](https://bitbucket.org/projects/test/repos/my-project/commits/0c0dd7063dd7a47e1440366dd7b976e3e75e169d)
|
||||||
|
* stylise button [View](https://bitbucket.org/projects/test/repos/my-project/commits/128e4b628185bcb00fe0de15abe2c9277b25f52f)
|
||||||
|
* :alien: add ngx translate config [View](https://bitbucket.org/projects/test/repos/my-project/commits/d1ced70b1b81e2fa7cf8124bc9d6ee9cd76eeae5)
|
||||||
|
* :alien: json strings to translate things in en/fr [View](https://bitbucket.org/projects/test/repos/my-project/commits/90323c28c7e96d1d3c70e54b8818d34680fc5783)
|
||||||
|
* :alien: add missing translation support [View](https://bitbucket.org/projects/test/repos/my-project/commits/91101f2326413f9d63476c026c0207f93cb3e490)
|
||||||
|
* :alien: translate 2 first pages [View](https://bitbucket.org/projects/test/repos/my-project/commits/0f2a72f8720220fd17db37006b5361b425975006)
|
||||||
|
* Add html code for voting [View](https://bitbucket.org/projects/test/repos/my-project/commits/6cc09aebb5f175d09862228799735aeed1ac1c85)
|
||||||
|
* Add css on vote component : No works [View](https://bitbucket.org/projects/test/repos/my-project/commits/e059d45f73b5ee16925260139bdf066a3ac1b4d0)
|
||||||
|
* Minimal commit [View](https://bitbucket.org/projects/test/repos/my-project/commits/9c4fabb176e78f28b72439d6e4f5ee138f404069)
|
||||||
|
* :zap: choice component JS logic and type constraints. demo for dev environment [View](https://bitbucket.org/projects/test/repos/my-project/commits/f48d05b5188df06e3e4494510cb6f780d6b8c982)
|
||||||
|
* :bug: fix undefined choice [View](https://bitbucket.org/projects/test/repos/my-project/commits/1074d219dd9dc5c267976806270dd6a2c51ed4ea)
|
||||||
|
* :zap: date en français dans le choix de vote [View](https://bitbucket.org/projects/test/repos/my-project/commits/2d060f99055acb3d5251b1afde70abc786768f51)
|
||||||
|
* Add round to buttons on vote-choice [View](https://bitbucket.org/projects/test/repos/my-project/commits/1b9c669ae3d16d8fcaaa6977d558e420e7bdfc03)
|
||||||
|
* Corrige center alignement [View](https://bitbucket.org/projects/test/repos/my-project/commits/36192647c01c47f1d6782da6c69297449c1f2d8b)
|
||||||
|
* stylize the date [View](https://bitbucket.org/projects/test/repos/my-project/commits/8215dfab78f101bd15fcfaa0752afedc0b56842d)
|
||||||
|
* Add `npm i` command to README.md [View](https://bitbucket.org/projects/test/repos/my-project/commits/fd27382a9aeaff8a6735a85712d4142f0b795976)
|
||||||
|
* Modify vote component [View](https://bitbucket.org/projects/test/repos/my-project/commits/280783c56b699f72e736f31125cf4ab22c9d8c70)
|
||||||
|
* Translation fr->en [View](https://bitbucket.org/projects/test/repos/my-project/commits/5e2193e8aa0aa5cea1fa1d20127142d84518ede6)
|
||||||
|
* Correction of a typing mistake [View](https://bitbucket.org/projects/test/repos/my-project/commits/a63f76b45014c9dbb199406b30389b447bb09d60)
|
||||||
|
* Put the words in a more natural order [View](https://bitbucket.org/projects/test/repos/my-project/commits/fd6cce277775a271aaab702e836dd93104d7e1be)
|
||||||
|
* Add i18n in navigation [View](https://bitbucket.org/projects/test/repos/my-project/commits/0cb0813eb774c7aff4f96d71822dfa2d9e0cd089)
|
||||||
|
* Stick "Frama" and "date" together [View](https://bitbucket.org/projects/test/repos/my-project/commits/efe0b892186b203dca49939573966eee10d1d772)
|
||||||
|
* Minimal commit [View](https://bitbucket.org/projects/test/repos/my-project/commits/c671a8bdea289d1623502d5672069897556af3ab)
|
||||||
|
* Replaced text by i18n json keys and add i18n attribute [View](https://bitbucket.org/projects/test/repos/my-project/commits/c5021a2aa1ff176457852f5419aa76e58dff2fa6)
|
||||||
|
* Align elements [View](https://bitbucket.org/projects/test/repos/my-project/commits/69802a99ffa5e5a23e94f6b1f1d6931c9bfc62aa)
|
||||||
|
* [front] global : update button styles [View](https://bitbucket.org/projects/test/repos/my-project/commits/802f54b930125db6c8994f53c1389d3892e0b91a)
|
||||||
|
* [front] global : increase main wrap size [View](https://bitbucket.org/projects/test/repos/my-project/commits/a176405dd492ca9941d5b02011436db0e3f2076e)
|
||||||
|
* [front] component : vote choice [View](https://bitbucket.org/projects/test/repos/my-project/commits/3e29117ea62ee3025ed1e3ae8b328aa51197dc3e)
|
||||||
|
* ajout composant graphique sondage [View](https://bitbucket.org/projects/test/repos/my-project/commits/a006e4d42a0bd1bb85361952f47c27aa5ca3307d)
|
||||||
|
* #36 : ajout librairie chartjs [View](https://bitbucket.org/projects/test/repos/my-project/commits/46a02846bfd0a49066cb03fcce04c1f239df5a8a)
|
||||||
|
* issue 36 : select daltonien [View](https://bitbucket.org/projects/test/repos/my-project/commits/5f2a2b4461f6a4b8a33b6d64af4180f7e1ff85de)
|
||||||
|
* Issue-30: Markdown support [View](https://bitbucket.org/projects/test/repos/my-project/commits/be96384a8e5f42211303b5f9215512787e9bb7cd)
|
||||||
|
* [front] component : vote choice [View](https://bitbucket.org/projects/test/repos/my-project/commits/6ee9f742faa27b039785290660563bce998fe52b)
|
||||||
|
* Issue-30 : markdown - bouton retour [View](https://bitbucket.org/projects/test/repos/my-project/commits/ca3b76d0c82dffa5c4f8f4228ef0579da7642500)
|
||||||
|
* Format html templates with tabs [View](https://bitbucket.org/projects/test/repos/my-project/commits/bfa44534aa0ccc821a5d5f73d40a967dbc45ebab)
|
||||||
|
* [fix] vote choice : minor css fixes [View](https://bitbucket.org/projects/test/repos/my-project/commits/28b3334d3e258f3cef1a36c3247aa6f89b37e8a4)
|
||||||
|
* [front] vote choice : add image and text cases [View](https://bitbucket.org/projects/test/repos/my-project/commits/6f8b180d1fdb50f10804025e6232fbe512cf680f)
|
||||||
|
* suppression du code mort [View](https://bitbucket.org/projects/test/repos/my-project/commits/f9a8c1d8c3f92099b2d29723a5337402a0bc6d05)
|
||||||
|
* Resolution du conflit [View](https://bitbucket.org/projects/test/repos/my-project/commits/985be95b0d16529196891d4c855c46bfad53c575)
|
||||||
|
* Conflit resolved [View](https://bitbucket.org/projects/test/repos/my-project/commits/8b728d172f1558f603bc8f11df0d97f737020772)
|
||||||
|
* Traduction placeholder [View](https://bitbucket.org/projects/test/repos/my-project/commits/61d31dfd5a252f7e89ad464c51d675d78b0812d5)
|
||||||
|
* Err correction special dates [View](https://bitbucket.org/projects/test/repos/my-project/commits/22a560d82d40337bd66ab30062ca235a7e3e99ca)
|
||||||
|
* issue-36 : restitution des votes d'un sondage sous forme de graphiques. début [View](https://bitbucket.org/projects/test/repos/my-project/commits/00597410277aa3c387a8b33d9e31033adc853fc9)
|
||||||
|
* :zap: choices to add,clear and delete [View](https://bitbucket.org/projects/test/repos/my-project/commits/b7afca96db4b811fa02e1f4725dc6f5661f1db0e)
|
||||||
|
* Issue-36 : Graph sondage [View](https://bitbucket.org/projects/test/repos/my-project/commits/723a0f9527776f1de653464b979980c662a6e909)
|
||||||
|
* Fix bug [View](https://bitbucket.org/projects/test/repos/my-project/commits/497cf9e12ca5ef283391b9586d83f1ca2daf13dd)
|
||||||
|
* fix bug [View](https://bitbucket.org/projects/test/repos/my-project/commits/1055a0cdbe3f800acccc6a8f06c3669f47ef6de7)
|
||||||
|
* Une partie de html [View](https://bitbucket.org/projects/test/repos/my-project/commits/942649656df42aa23f0117ed8757bb3e176129b8)
|
||||||
|
* :bug: fix focus on date, extend the empty all button to timespans [View](https://bitbucket.org/projects/test/repos/my-project/commits/cf2a12507e053d9235d6a03f1e0569c90df82c27)
|
||||||
|
* Ajout formatage données [View](https://bitbucket.org/projects/test/repos/my-project/commits/c36a3b064cc1330628037c57ffff9cf5c41c183c)
|
||||||
|
* :bug: fix deletions in date buttons , input of type date [View](https://bitbucket.org/projects/test/repos/my-project/commits/933c32798cc26461ca5b62ec3eb89c18f29e4953)
|
||||||
|
* :zap: start call backend service to retrieve my polls by email [View](https://bitbucket.org/projects/test/repos/my-project/commits/026c7cfda2476e7a77cecfaff28c151e835b7a10)
|
||||||
|
* :alien: translate button to add [View](https://bitbucket.org/projects/test/repos/my-project/commits/6a40e041d0af462d9e776632168d033ab2d7eae2)
|
||||||
|
* :alien: translate button to add in template [View](https://bitbucket.org/projects/test/repos/my-project/commits/20876f9a8d927fadc083b193d671355f4bfd3423)
|
||||||
|
* :zap: add unique interval days [View](https://bitbucket.org/projects/test/repos/my-project/commits/572f0837cc93feba5ee76a6b112a14d333ba6121)
|
||||||
|
* :alien: translate buttons [View](https://bitbucket.org/projects/test/repos/my-project/commits/7b590840b2a8504db34114434fd2345141711f4d)
|
||||||
|
* :zap: fix function call in template [View](https://bitbucket.org/projects/test/repos/my-project/commits/e81389eae13b8709085710ce60bae6d3307ba7ae)
|
||||||
|
* :zap: link graphic in nav [View](https://bitbucket.org/projects/test/repos/my-project/commits/c0f800ff91822255a4d84e18106d238506dfaab4)
|
||||||
|
* Page crée et bien complétée (plus qu'a faire les alignements) [View](https://bitbucket.org/projects/test/repos/my-project/commits/84b87486ed57d14549f6a5bc5c00df508cad7ed1)
|
||||||
|
* Presque fini [View](https://bitbucket.org/projects/test/repos/my-project/commits/8f8a0d07d27a23f0871f1718ca5e0654bb1f38db)
|
||||||
|
* Dernier commit avant merge [View](https://bitbucket.org/projects/test/repos/my-project/commits/39d4213bded6915081dd42cd506c52ff20ac2659)
|
||||||
|
* Resolve a part of merge conflicts [View](https://bitbucket.org/projects/test/repos/my-project/commits/275a065d8ebde70d9556ad1c2e915daf6228578b)
|
||||||
|
* :zap: svg in assets [View](https://bitbucket.org/projects/test/repos/my-project/commits/d993111d34afa7f33a56c95823e2ca159a8350f1)
|
||||||
|
* :alien: translation keys for visibility page [View](https://bitbucket.org/projects/test/repos/my-project/commits/7a9c7b6dc3d5f63282fe48e8dd9b1979cca38463)
|
||||||
|
* start visibility [View](https://bitbucket.org/projects/test/repos/my-project/commits/8ff8cbc40838ac3ffb41643804ca3aa976adc4c8)
|
||||||
|
* :zap: selector custom component for ui, half the visibility page [View](https://bitbucket.org/projects/test/repos/my-project/commits/d107978f2c66dfa80abb47ddc2cce107f8a5eec1)
|
||||||
|
* end visibilty fields link with poll config [View](https://bitbucket.org/projects/test/repos/my-project/commits/f4108ee61b31fe555775a05dbebba49ed78d722f)
|
||||||
|
* :zap: link default values [View](https://bitbucket.org/projects/test/repos/my-project/commits/c1935dbb87b53b4750c798dee79506cc215ac1dd)
|
||||||
|
* :zap: linked things [View](https://bitbucket.org/projects/test/repos/my-project/commits/7da480f310359c4d29a030654582cbadf68d26ce)
|
||||||
|
* :art: style remove strange section sizes, h1 size greater [View](https://bitbucket.org/projects/test/repos/my-project/commits/93f3aa76bd7aced66d936967c7f7fb90b2d800cd)
|
||||||
|
* add default content to poll config [View](https://bitbucket.org/projects/test/repos/my-project/commits/e179be812eda262fb103c67b721f35f7c95010fa)
|
||||||
|
* :zap: enhance keyboard navigation with answers [View](https://bitbucket.org/projects/test/repos/my-project/commits/9c02b1ae2b16abd5ef43f41721a2657369fedc28)
|
||||||
|
* :alien: add english key to translate [View](https://bitbucket.org/projects/test/repos/my-project/commits/48586b847507e93f0c93c084364523d2bef94e73)
|
||||||
|
* changer la langue entre fr et en quand on clique sur l'icone de traduction [View](https://bitbucket.org/projects/test/repos/my-project/commits/b78ea6273eadfa9ea862952fdd4ed32b72a9191e)
|
||||||
|
* Translation work [View](https://bitbucket.org/projects/test/repos/my-project/commits/abe07bc9784cce5aa93ffa2831ca18abc8e8c046)
|
||||||
|
* HTML Part [View](https://bitbucket.org/projects/test/repos/my-project/commits/c581d7262500778c7fab1d63323f74437a6e0665)
|
||||||
|
* Complete HTML [View](https://bitbucket.org/projects/test/repos/my-project/commits/a53322b441be5cdf882777e92909205e91008445)
|
||||||
|
* CSS Part [View](https://bitbucket.org/projects/test/repos/my-project/commits/3e372d6f53b7dc8e06d26bc8295663505f958def)
|
||||||
|
* Other css part [View](https://bitbucket.org/projects/test/repos/my-project/commits/07f5d60b95e87c5393061a2c443a8d4f3b66e285)
|
||||||
|
* :zap: start backend calls [View](https://bitbucket.org/projects/test/repos/my-project/commits/f223b760fff0cfc769396891f5528fc97b55099d)
|
||||||
|
* organise calls, add headers [View](https://bitbucket.org/projects/test/repos/my-project/commits/cb6636f1557cdf4e33f0a2163245f6ab5ae63755)
|
||||||
|
* push [View](https://bitbucket.org/projects/test/repos/my-project/commits/d3a7a37d4db51e2aaddae9180c7c4d6dc8413444)
|
||||||
|
* Spelling corrections [View](https://bitbucket.org/projects/test/repos/my-project/commits/6f08fc3dd05203babedf7d15c8c9fe09b9b0eca7)
|
||||||
|
* 🎉🎉 Page terminée 🎉🎉 [View](https://bitbucket.org/projects/test/repos/my-project/commits/73b9d496e68db9c0bdb49e1f53fc3a25129c97eb)
|
||||||
|
* Plus qu'a aligner les labels aux inputs [View](https://bitbucket.org/projects/test/repos/my-project/commits/be66cc0a907fc1e947d5c02e85ff1e6388eec0a1)
|
||||||
|
* Terminé [View](https://bitbucket.org/projects/test/repos/my-project/commits/2b079f63a043e3bd2dda486ca8e1005b72535c6a)
|
||||||
|
* Add route and HTML [View](https://bitbucket.org/projects/test/repos/my-project/commits/adcdaf911f99567bb348accd1197a6f013939bca)
|
||||||
|
* Add css [View](https://bitbucket.org/projects/test/repos/my-project/commits/c727aa935e509e061b0dba669e41c82bc6791e63)
|
||||||
|
* :art: style on current page from the route data, and texts in the confirm page, step end [View](https://bitbucket.org/projects/test/repos/my-project/commits/809aa0f02fc0add44b497a4ba8ee55c6ee17fc6c)
|
||||||
|
* :zap: link to public [View](https://bitbucket.org/projects/test/repos/my-project/commits/112119194a1255b6c96e82476dc7e08123b1b835)
|
||||||
|
* :zap: remove debug step in nav [View](https://bitbucket.org/projects/test/repos/my-project/commits/daf7006bb8317b4ec6ed96e0a28ef93d8de9ba39)
|
||||||
|
* :zap: fix some deps [View](https://bitbucket.org/projects/test/repos/my-project/commits/cf4e9f45634b0eb8fa52bf77c52373876ce5eaef)
|
||||||
|
* :zap: update dependencies with yarn, add primefaces to make toasts [View](https://bitbucket.org/projects/test/repos/my-project/commits/ded5e71e73a037096d0497b615faf82d733a775b)
|
||||||
|
* :art: add font awesome [View](https://bitbucket.org/projects/test/repos/my-project/commits/4296c5c9f95c2dae7754c4a6ba1751444b9ff039)
|
||||||
|
* :zap: get poll data in vote choices [View](https://bitbucket.org/projects/test/repos/my-project/commits/5657f57fc75b05c055c63798032c8eae0514a0e0)
|
||||||
|
* :zap: reorganize poll display page [View](https://bitbucket.org/projects/test/repos/my-project/commits/79ef34e5af971db537f42cb0c4eacd6bd79f00e0)
|
||||||
|
* merge with dev [View](https://bitbucket.org/projects/test/repos/my-project/commits/c9b4ffe328ec283b2630406c788dab70b45c8505)
|
||||||
|
* :zap: enhance display poll page [View](https://bitbucket.org/projects/test/repos/my-project/commits/52587428ddcbe179c71892f9288a44202306fb0a)
|
||||||
|
* :zap: reorganize poll display page and urls in config [View](https://bitbucket.org/projects/test/repos/my-project/commits/051e4d8ee469370a7ae7b68cce6a1325394b9c12)
|
||||||
|
* :zap: change translation button way to be in sync with the model [View](https://bitbucket.org/projects/test/repos/my-project/commits/37904596fbc2f68e2fa6d80d44422b4230af71d8)
|
||||||
|
* :art: visual help on clickable elements [View](https://bitbucket.org/projects/test/repos/my-project/commits/5eba5d684b7c8b6194ac1676b4559d189792ec44)
|
||||||
|
* :zap: check for uniqueness of the slug, slug the title by default [View](https://bitbucket.org/projects/test/repos/my-project/commits/2720b6596241874df330373645952f6a53ebeb5c)
|
||||||
|
* :zap: add email to creation [View](https://bitbucket.org/projects/test/repos/my-project/commits/7c64f1f8f08b75fb34ddd7459d8e9580202e5298)
|
||||||
|
* :zap: copy to clipboard ok [View](https://bitbucket.org/projects/test/repos/my-project/commits/4098f7ec5c533d3b35e629278006d6134ff8ee38)
|
||||||
|
* :zap: toast messages when copied to clipboard and network errors [View](https://bitbucket.org/projects/test/repos/my-project/commits/b44f2719b44e4aba7476dc7952b4cc739b9d1d39)
|
||||||
|
* :book: clean console logs [View](https://bitbucket.org/projects/test/repos/my-project/commits/7df60e5a514783a5d393e9a3446a934e12e580ea)
|
||||||
|
* :bug: fix show and hide of password input [View](https://bitbucket.org/projects/test/repos/my-project/commits/fd4bbb5c712fb79204badae316d92fd17be7c9e5)
|
||||||
|
* :zap: calls in administration page to delete things [View](https://bitbucket.org/projects/test/repos/my-project/commits/bae3f19af223022c933fd622d3c8adf2bf6167db)
|
||||||
|
* :bug: remove duplicate text in end of admin page [View](https://bitbucket.org/projects/test/repos/my-project/commits/113609e945f5e09ae3c04119225eb6bd7fa670c8)
|
||||||
|
* :zap: toast todo things [View](https://bitbucket.org/projects/test/repos/my-project/commits/7b790e3cdc58ee296e16645abef0fc9ee0cad629)
|
||||||
|
* :zap: computations for the result graph [View](https://bitbucket.org/projects/test/repos/my-project/commits/1b65d58a6f52acfb0265c33de7c9779177b73ff1)
|
||||||
|
* toggle simple answer [View](https://bitbucket.org/projects/test/repos/my-project/commits/a3e243ed19bddc12e194a166ab38c3101835fcc2)
|
||||||
|
* :bug: fix build [View](https://bitbucket.org/projects/test/repos/my-project/commits/10497c9cb09873f3ede8b75729d2f444d12e5338)
|
||||||
|
* :zap: add update demo script, remove duplicate toast, try hash route [View](https://bitbucket.org/projects/test/repos/my-project/commits/6a3d2c3195303b5094f43102df78f7e4990e19c8)
|
||||||
|
* :zap: modal to display url [View](https://bitbucket.org/projects/test/repos/my-project/commits/255205696bcf8778088404348bdd0b748649f0b3)
|
||||||
|
* :zap: list mypolls on first page [View](https://bitbucket.org/projects/test/repos/my-project/commits/9ebd22536b1ed314e264757867d84bef1ee87d9f)
|
||||||
|
* buttons to nav [View](https://bitbucket.org/projects/test/repos/my-project/commits/3808f194258dd5cd93b03258ec2f2d90ee6b615b)
|
||||||
|
* :zap: erasable inputs on first config screen ok [View](https://bitbucket.org/projects/test/repos/my-project/commits/3ada66ac5f36c38502556f18982954d2526cce0e)
|
||||||
|
* launch creation from resume page [View](https://bitbucket.org/projects/test/repos/my-project/commits/f8568eb9102668521556b40eacc89ee8b639db09)
|
||||||
|
* :zap: lang input placement [View](https://bitbucket.org/projects/test/repos/my-project/commits/ff5c11e79c42926296516f27cc95aa660e34a50d)
|
||||||
|
* :zap: really fetch a poll by id [View](https://bitbucket.org/projects/test/repos/my-project/commits/123a0b1c809999306f131e6e0f9523d82944d38a)
|
||||||
|
* :zap: update vote list after vote creation [View](https://bitbucket.org/projects/test/repos/my-project/commits/06cf447529583f05789e17f9d9b9d196f0a56409)
|
||||||
|
* :zap: hop [View](https://bitbucket.org/projects/test/repos/my-project/commits/96709c9bc71980541497eb7f4387512948f3de08)
|
||||||
|
* :book: add mocks from updated backend [View](https://bitbucket.org/projects/test/repos/my-project/commits/a68cbdcc0a017e30490239ff9593c69b7b2f798f)
|
||||||
|
* :bug: fix recursion in input erase button [View](https://bitbucket.org/projects/test/repos/my-project/commits/195259bb722a4dd5260a05bbe5dd77cbc6d0577e)
|
||||||
|
* :zap: menu to nav on poll display - #64 [View](https://bitbucket.org/projects/test/repos/my-project/commits/d2c726012bbc4cf413b18f454fc9e859fdb50b49)
|
||||||
|
* :zap: build for production, :bug: fix publicy of vars in templates [View](https://bitbucket.org/projects/test/repos/my-project/commits/ea43430e1b7acf3f6250215fc9966cca5e6422a5)
|
||||||
|
* :zap: build for demo updated [View](https://bitbucket.org/projects/test/repos/my-project/commits/f96833d96e7c53dd855113ef9e3a7dd7b62c5021)
|
||||||
|
* :zap: use hash for internal routing in the frontend [View](https://bitbucket.org/projects/test/repos/my-project/commits/b06a44fb98ec9d0f3903b99f917aff7817742983)
|
||||||
|
* poll routing hints in the app, demo precision in header [View](https://bitbucket.org/projects/test/repos/my-project/commits/8322a9a83a799e67b90dd47e0aa4ff1c56b81e0b)
|
||||||
|
* :zap: other url to create a poll [View](https://bitbucket.org/projects/test/repos/my-project/commits/9900e1ec976dd98fcb63bc35ed6f286caa8c427c)
|
||||||
|
* sync fetch stuff [View](https://bitbucket.org/projects/test/repos/my-project/commits/02995c8b3d40eb7b05361c8ecf9e59a706a0fd51)
|
||||||
|
* :zap: mock for poll 1, fix new comment [View](https://bitbucket.org/projects/test/repos/my-project/commits/346bd9dc4f69296c51550f0da1b7e40a632051a7)
|
||||||
|
* stuff [View](https://bitbucket.org/projects/test/repos/my-project/commits/7e4e80f1ed3843eb8724e93d46c1d7fc598dcdd1)
|
||||||
|
* :bug: fix fetch of old params [View](https://bitbucket.org/projects/test/repos/my-project/commits/01bddc842db7b91ed2e5ebe4db036ba709dae3f4)
|
||||||
|
* :zap: add administration key after creation [View](https://bitbucket.org/projects/test/repos/my-project/commits/7bc53e198d8dc9fdae172bd596647a6b2ca1ad6f)
|
||||||
|
* :zap: choices lighter and work [View](https://bitbucket.org/projects/test/repos/my-project/commits/22bd836a16187607ee3be22cad867c7f7e2e729b)
|
||||||
|
* step to date form [View](https://bitbucket.org/projects/test/repos/my-project/commits/2e6723a1f1121c47bf9e6fb00cc043f987394940)
|
||||||
|
* fix buttons colours and manage a bit more the date form [View](https://bitbucket.org/projects/test/repos/my-project/commits/f056b0d79a2a5c894cc91d3723d16244c4abb58d)
|
||||||
|
* button to act on time [View](https://bitbucket.org/projects/test/repos/my-project/commits/a66933041f46dbaa2a15d373fd1809c82607dff3)
|
||||||
|
* change preview for dates type [View](https://bitbucket.org/projects/test/repos/my-project/commits/460e236d604beb1c24b4beaa5a1d992eb5b45dab)
|
||||||
|
* date accessor [View](https://bitbucket.org/projects/test/repos/my-project/commits/22736f709e36463e9e470e9a3385d246c85fd85f)
|
||||||
|
* :bug: handle no current poll [View](https://bitbucket.org/projects/test/repos/my-project/commits/f9d1cfff3a8f0f8d17ce622f21bc74fa9aa66aac)
|
||||||
|
* :bug: fix some config keys [View](https://bitbucket.org/projects/test/repos/my-project/commits/100569515328df6988c250f87e12124e9034227e)
|
||||||
|
* :zap: manage interval of date with date objects [View](https://bitbucket.org/projects/test/repos/my-project/commits/e227344647501e02bb3ed56da2e239e5c9e2a06a)
|
||||||
|
* :zap: disabled button when nothing is selected, detect counts [View](https://bitbucket.org/projects/test/repos/my-project/commits/0369d934bddc852e71d7a671ec41765b1a80990c)
|
||||||
|
* display a table of answers [View](https://bitbucket.org/projects/test/repos/my-project/commits/43ea524c2604891095940da3827ecd7c0003a10b)
|
||||||
|
* :bug: fix visibility of config in summary [View](https://bitbucket.org/projects/test/repos/my-project/commits/f976d65d204183c3c9f5d1d606edcf97bf6db311)
|
||||||
|
* :zap: update current answers with a previous vote [View](https://bitbucket.org/projects/test/repos/my-project/commits/9cf368f5504c1dcd28d34f9682888c65202bda6f)
|
||||||
|
* sort table of answers [View](https://bitbucket.org/projects/test/repos/my-project/commits/ca69160ea979c2995a2e5cdc2b825bb05e293fa2)
|
||||||
|
* :zap: show preferred texts in summary, icons for votes [View](https://bitbucket.org/projects/test/repos/my-project/commits/0e8d18cd8000b2b9a9fb3d74277bf24a26c8b380)
|
||||||
|
* :zap: add bulma framework, style table [View](https://bitbucket.org/projects/test/repos/my-project/commits/74ade7ac0fe52d48bec50522b648b5e0bac27d1e)
|
||||||
|
* fix select visibility [View](https://bitbucket.org/projects/test/repos/my-project/commits/bc67f26327186ef6ff9a476824eae987f3b83532)
|
||||||
|
* :zap: component to copy text to clipboard [View](https://bitbucket.org/projects/test/repos/my-project/commits/63e1a5e899cd6681ce819c53669a76b7987fb7a2)
|
||||||
|
* :zap: unify update config after fetching a poll config [View](https://bitbucket.org/projects/test/repos/my-project/commits/dd9e8950f4473dd39841ba3150bff23b8f172016)
|
||||||
|
* :fix: load vote of someone else ok [View](https://bitbucket.org/projects/test/repos/my-project/commits/b1adfaa8ea565cc6204ef975d5153ba99fc66e75)
|
||||||
|
* :zap: reset all answers before loading a stack [View](https://bitbucket.org/projects/test/repos/my-project/commits/4bcd3e475f9c7f31b5b4f8f5ffe700239929660c)
|
||||||
|
* export data in csv with rows and comments [View](https://bitbucket.org/projects/test/repos/my-project/commits/e3e5cf6638b2522c2bc7ac7181d63a6f3683e502)
|
||||||
|
* :zap: split poll display components [View](https://bitbucket.org/projects/test/repos/my-project/commits/ab23b9b2566cbd328bf9a510202c39fcd046634c)
|
||||||
|
* :gears: refacto date and poll utilities functions in a separate class [View](https://bitbucket.org/projects/test/repos/my-project/commits/c5b52764002149eff41dcd48cb876fa6ec79d562)
|
||||||
|
* :book: update refacto utilities as services [View](https://bitbucket.org/projects/test/repos/my-project/commits/44424d378aef95bb0bfc014104b5346c340ad5c7)
|
||||||
|
* :hammer: test voting choice, add ci pipeline config [View](https://bitbucket.org/projects/test/repos/my-project/commits/0a3ee9b6f0c145ed069eb07f554f20f4f294cff4)
|
||||||
|
* :zap: update package lock for CI [View](https://bitbucket.org/projects/test/repos/my-project/commits/91b1d64f0a6282fcbebd46aab328988e75be2620)
|
||||||
|
* :bug: run test in single run mode on CI [View](https://bitbucket.org/projects/test/repos/my-project/commits/a088daf4a3a1870a82c300e66d1463b0be909f5e)
|
||||||
|
* run build for prod on CI [View](https://bitbucket.org/projects/test/repos/my-project/commits/b360720e1504af9b220d579ee2b01668255c6b7d)
|
||||||
|
* :gears: update ng cli 8 [View](https://bitbucket.org/projects/test/repos/my-project/commits/8f59e654477a5b2ccea0748b59720ccb8137919e)
|
||||||
|
* :hammer: update to angular v 9 [View](https://bitbucket.org/projects/test/repos/my-project/commits/38d1d52633a3e0fb8d68433edb985754861aaf2b)
|
||||||
|
* :zap: custom date value accessor with renderer 2 [View](https://bitbucket.org/projects/test/repos/my-project/commits/1816150c6d06c51ab83cc77ebebff7ff70cc002f)
|
||||||
|
* :hammer: test with FirefoxHeadless for gitlab CI [View](https://bitbucket.org/projects/test/repos/my-project/commits/e089d19993613619c0585556f5cdc6265154a0cb)
|
||||||
|
* :zap: manage dates poll type display, fix typo in add button date [View](https://bitbucket.org/projects/test/repos/my-project/commits/15bbf0e375309a8e273c4a5b9aa0bc70cd5cdc6e)
|
||||||
|
* dates and recap side to side [View](https://bitbucket.org/projects/test/repos/my-project/commits/61bf6a289c44cac419d60e186f18594b21f1b4e8)
|
||||||
|
* :zap: ad storybook [View](https://bitbucket.org/projects/test/repos/my-project/commits/4ec9b174ad295f5cee76e515ed70b88313f6476e)
|
||||||
|
* :zap: add some types interfaces in the config [View](https://bitbucket.org/projects/test/repos/my-project/commits/49b79395644d792ac633a0df5d15da07e0c460a3)
|
||||||
|
* :book: add compodoc [View](https://bitbucket.org/projects/test/repos/my-project/commits/d7a2a8d6b78f7ea920fd794139f7f3d0d6dddd51)
|
||||||
|
* :bug: fix synced time slices [View](https://bitbucket.org/projects/test/repos/my-project/commits/ff8e02b2154d81a62a7f979dcfcc83c826a79295)
|
||||||
|
* :fix: remove puckage lock in profit of yarn [View](https://bitbucket.org/projects/test/repos/my-project/commits/ba7465fe8395c26e0d2bb6ae8fcab10d179a2497)
|
||||||
|
* :bug: add package only for CI [View](https://bitbucket.org/projects/test/repos/my-project/commits/e03359e8db170647a5534e376803a9d6e0a10ddd)
|
||||||
|
* :zap: component to select theme [View](https://bitbucket.org/projects/test/repos/my-project/commits/2d757c6726a942237c3bad27258e1820bce1e5d0)
|
||||||
|
* :art: better disposal for theme selector [View](https://bitbucket.org/projects/test/repos/my-project/commits/312b2d859943900a8784d0fbdc1cc03db0ab2be4)
|
||||||
|
* :hammer: fix for CI, bad option in npm run test [View](https://bitbucket.org/projects/test/repos/my-project/commits/a0138f84d3b01e276909a934d176a375e22529b1)
|
||||||
|
* :zap: add confirmation modal for admin user, issue #59 [View](https://bitbucket.org/projects/test/repos/my-project/commits/c0a4ec7a0c143263ed84b494ca30fcce3dc27e00)
|
||||||
|
* :bug: fix update after vote #65 [View](https://bitbucket.org/projects/test/repos/my-project/commits/75c26572fe0fcc9b305c51d10a39bd1d3fba6f43)
|
||||||
|
* :zap: can or can not modify votes issue #49 [View](https://bitbucket.org/projects/test/repos/my-project/commits/fff4e57378d9a49211a684f64433870fd67b3441)
|
||||||
|
* :zap: fix issue of selecting can or can not modify answers [View](https://bitbucket.org/projects/test/repos/my-project/commits/23dc45f1986fd8b3c06af7ba02a192737c04c3a4)
|
||||||
|
* :art: arrange create or retrieve page in two columns [View](https://bitbucket.org/projects/test/repos/my-project/commits/60c184c60ba389e8ebd1b40d6ac0d51488fe66b6)
|
||||||
|
* split many components, presentation with left nav [View](https://bitbucket.org/projects/test/repos/my-project/commits/9bdd4e0084d8c4fedf45453b947348cf55ad7416)
|
||||||
|
* :hammer: fix linting, add env default [View](https://bitbucket.org/projects/test/repos/my-project/commits/6e6b812d2d5271221d65b7d3d8c2705e134e2683)
|
||||||
|
* :zap: theme persisted in the localstorage, reload config on page reload - issue #75 [View](https://bitbucket.org/projects/test/repos/my-project/commits/936110846c4326d5772c89fbfad488b44aaa7651)
|
||||||
|
* :zap: :alien: Conserver le choix de langue au rechargement de la page - issue #54 [View](https://bitbucket.org/projects/test/repos/my-project/commits/acb091802c51ee7d1fad0b0ae08597da87cf3c52)
|
||||||
|
* :zap: export format json public [View](https://bitbucket.org/projects/test/repos/my-project/commits/e2c388da9e26e908ca278cde575ac9bff28926e4)
|
||||||
|
* :zap: add eslint [View](https://bitbucket.org/projects/test/repos/my-project/commits/e56d5cdcef59bba41e0d37711f047b6f799e45fa)
|
||||||
|
* - upgrade all packages - intall & configure linters (eslint, prettier, etc.) [View](https://bitbucket.org/projects/test/repos/my-project/commits/dd9bb8922f24cca7b33c34cb3bad1b190aebb91a)
|
||||||
|
* reformat all files + move routes.ts to AppRoutingModule [View](https://bitbucket.org/projects/test/repos/my-project/commits/18a7d4781ac44f820b870269f5134b305758e722)
|
||||||
|
* Jest tests [View](https://bitbucket.org/projects/test/repos/my-project/commits/ca5ffdc896864d47467b7562494c600b120f4d2b)
|
||||||
|
* routing for admin ith token parameter, add comments [View](https://bitbucket.org/projects/test/repos/my-project/commits/15b10f938149cc5fb8af087f773188be3c722bfe)
|
||||||
|
* :zap: admin route calling the backend [View](https://bitbucket.org/projects/test/repos/my-project/commits/8fa39250d5e5863c8987b3fc2e9464dc3bb61d7e)
|
||||||
|
* refacto : create entities, enums, services [View](https://bitbucket.org/projects/test/repos/my-project/commits/e5243204572e2dcba735335f4861f36d72fd98a5)
|
||||||
|
* :gears: move components to better semantic folders [View](https://bitbucket.org/projects/test/repos/my-project/commits/86ada008c505f6935e540023bb706cf9605588d9)
|
||||||
|
* :zap: change theme enum to correspond with themes classnames [View](https://bitbucket.org/projects/test/repos/my-project/commits/60b4bfb6197318ca5bb6e21d8dfc031da7c5d070)
|
||||||
|
* :zap: add component having a couple of configurable links, to navigate between pages [View](https://bitbucket.org/projects/test/repos/my-project/commits/da7e96526c3ed95b395b33bdaee5347ea9837f6f)
|
||||||
|
* Feature/simplify scss [View](https://bitbucket.org/projects/test/repos/my-project/commits/ba7a24708dd83cc99c81ebe064f5570fac369a38)
|
||||||
|
* gitignore add eslintcache file [View](https://bitbucket.org/projects/test/repos/my-project/commits/985b9fcdcf17b35790e341318b1a109b3e454a79)
|
||||||
|
* update env api endpoints [View](https://bitbucket.org/projects/test/repos/my-project/commits/23b8622a4f2b8d74e1b2d80319658ac70bcd2e21)
|
||||||
|
* rebase branch 'feature/refacto_1' of https://framagit.org/framasoft/framadate/funky-framadate-front into feature/refacto_1 [View](https://bitbucket.org/projects/test/repos/my-project/commits/7a4f16e4845f74894bcbfd7344205f005c243b5e)
|
||||||
|
* :bug: remove admin component request [View](https://bitbucket.org/projects/test/repos/my-project/commits/4ec9091233986af49d5c271b91bdbe33b18aaebe)
|
||||||
|
* :bug: fix window variable in html [View](https://bitbucket.org/projects/test/repos/my-project/commits/48636ad9478e002da705bd96c330333cb3bb3fc9)
|
||||||
|
* split config service & dispatch [View](https://bitbucket.org/projects/test/repos/my-project/commits/3997dd090e076bcd3f92562e231f118eb5cc731f)
|
||||||
|
* upgrade archi with modules [View](https://bitbucket.org/projects/test/repos/my-project/commits/7029368ab1fc7f4ebbddcaca3d7140f4441d2873)
|
||||||
|
* - replace date-fns by momentJS - install ng2-chart along with chart.js [View](https://bitbucket.org/projects/test/repos/my-project/commits/91be2a3048dbaa0179fa97f8cbc027d06b276f4a)
|
||||||
|
* 👷 — Build and deploy on Gitlab pages [View](https://bitbucket.org/projects/test/repos/my-project/commits/f6753822183d63a53c908017740b0908a600f3cc)
|
||||||
|
* 👷 — Try to deploy build on Gitlab page even if test fails [View](https://bitbucket.org/projects/test/repos/my-project/commits/f1cbf175a9c93681ffa0e438564cc76925e3c87a)
|
||||||
|
* 👷 — Deploy build on Gitlab page before tests [View](https://bitbucket.org/projects/test/repos/my-project/commits/96354f6202c0de8892a7516658ea1a5e65a28615)
|
||||||
|
* 👷 — Modify <base> tag in build’s index.html [View](https://bitbucket.org/projects/test/repos/my-project/commits/da854454aaee8390e9430def4674577b747433cb)
|
||||||
|
* 👷 — Cleaner script for Gitlab page build [View](https://bitbucket.org/projects/test/repos/my-project/commits/645b25de790b43c19191545beecd4923a29b71eb)
|
||||||
|
* [feat] :zap: add a floating button to give feedback [View](https://bitbucket.org/projects/test/repos/my-project/commits/442530983b8015a291ae34be78d78c9e061adf7d)
|
||||||
|
* :style: style for feedback options, fixed floating button [View](https://bitbucket.org/projects/test/repos/my-project/commits/9057e890a408199eb96b6a6b7a92336a4b31582c)
|
||||||
|
* default to hide menu [View](https://bitbucket.org/projects/test/repos/my-project/commits/93ea16127475cd7611b70684ea6ff2f6d90ce96e)
|
||||||
|
* :zap: refacto feedback, :art: style for popup links, place icons before text [View](https://bitbucket.org/projects/test/repos/my-project/commits/cc27f31e0ecf08c5cae26068d19e1e715e921844)
|
||||||
|
* :zap: styling themes [View](https://bitbucket.org/projects/test/repos/my-project/commits/23c6b9400ee2d2917e3f5e8cf3d327fd2a537747)
|
||||||
|
* :book: add footer links, :art: set default theme to light, fix some details with black theme. [View](https://bitbucket.org/projects/test/repos/my-project/commits/a93a34a638ecca03dfc6466f0b347c9961cff18f)
|
||||||
|
* :art: primary button, section to find back my polls on home [View](https://bitbucket.org/projects/test/repos/my-project/commits/b2a739016fbc39b69138127fe60de621698aa904)
|
||||||
|
* add feedback button, load administration module from app module [View](https://bitbucket.org/projects/test/repos/my-project/commits/9c60f8a379fffea4574c86799c886aee37dd9968)
|
||||||
|
* :zap: change branch name in update demo script [View](https://bitbucket.org/projects/test/repos/my-project/commits/a1de41699e4aeeb6149f2a93f8c98696ff952a40)
|
||||||
|
* :zap: demo build script back to life [View](https://bitbucket.org/projects/test/repos/my-project/commits/4f0a29e806f9a87b97c7024487b195b3c90896eb)
|
||||||
|
* add user settings button & modal [View](https://bitbucket.org/projects/test/repos/my-project/commits/355fed53f3dc45fc27245e5b13dcefadac774b87)
|
||||||
|
* add json-server + refacto [View](https://bitbucket.org/projects/test/repos/my-project/commits/ae2974967048a6bbbba65df79591a1dcff970064)
|
||||||
|
* clean refacto [View](https://bitbucket.org/projects/test/repos/my-project/commits/3125e86f0bdc1ab74cec9baeb273588afe92ca90)
|
||||||
|
* replace primeng by material && improvments [View](https://bitbucket.org/projects/test/repos/my-project/commits/f9b847b305192506b2fc8109f187f6a45afeccd3)
|
||||||
|
* add route resolver for lazy-loading [View](https://bitbucket.org/projects/test/repos/my-project/commits/63600c759ebbdba5473789b6b030fe8e33a767ae)
|
||||||
|
* refacto routing [View](https://bitbucket.org/projects/test/repos/my-project/commits/a62e00c6adf4a0a62a617e0e5a9a054b6bfd6803)
|
||||||
|
|
||||||
|
|
||||||
|
660
LICENSE.md
660
LICENSE.md
@ -0,0 +1,660 @@
|
|||||||
|
### GNU AFFERO GENERAL PUBLIC LICENSE
|
||||||
|
|
||||||
|
Version 3, 19 November 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc.
|
||||||
|
<https://fsf.org/>
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies of this
|
||||||
|
license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
### Preamble
|
||||||
|
|
||||||
|
The GNU Affero General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works, specifically designed to ensure
|
||||||
|
cooperation with the community in the case of network server software.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
our General Public Licenses are intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains
|
||||||
|
free software for all its users.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
Developers that use our General Public Licenses protect your rights
|
||||||
|
with two steps: (1) assert copyright on the software, and (2) offer
|
||||||
|
you this License which gives you legal permission to copy, distribute
|
||||||
|
and/or modify the software.
|
||||||
|
|
||||||
|
A secondary benefit of defending all users' freedom is that
|
||||||
|
improvements made in alternate versions of the program, if they
|
||||||
|
receive widespread use, become available for other developers to
|
||||||
|
incorporate. Many developers of free software are heartened and
|
||||||
|
encouraged by the resulting cooperation. However, in the case of
|
||||||
|
software used on network servers, this result may fail to come about.
|
||||||
|
The GNU General Public License permits making a modified version and
|
||||||
|
letting the public access it on a server without ever releasing its
|
||||||
|
source code to the public.
|
||||||
|
|
||||||
|
The GNU Affero General Public License is designed specifically to
|
||||||
|
ensure that, in such cases, the modified source code becomes available
|
||||||
|
to the community. It requires the operator of a network server to
|
||||||
|
provide the source code of the modified version running there to the
|
||||||
|
users of that server. Therefore, public use of a modified version, on
|
||||||
|
a publicly accessible server, gives the public access to the source
|
||||||
|
code of the modified version.
|
||||||
|
|
||||||
|
An older license, called the Affero General Public License and
|
||||||
|
published by Affero, was designed to accomplish similar goals. This is
|
||||||
|
a different license, not a version of the Affero GPL, but Affero has
|
||||||
|
released a new version of the Affero GPL which permits relicensing
|
||||||
|
under this license.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
### TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
#### 0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU Affero General Public
|
||||||
|
License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds
|
||||||
|
of works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of
|
||||||
|
an exact copy. The resulting work is called a "modified version" of
|
||||||
|
the earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user
|
||||||
|
through a computer network, with no transfer of a copy, is not
|
||||||
|
conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices" to
|
||||||
|
the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
#### 1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work for
|
||||||
|
making modifications to it. "Object code" means any non-source form of
|
||||||
|
a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users can
|
||||||
|
regenerate automatically from other parts of the Corresponding Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that same
|
||||||
|
work.
|
||||||
|
|
||||||
|
#### 2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not convey,
|
||||||
|
without conditions so long as your license otherwise remains in force.
|
||||||
|
You may convey covered works to others for the sole purpose of having
|
||||||
|
them make modifications exclusively for you, or provide you with
|
||||||
|
facilities for running those works, provided that you comply with the
|
||||||
|
terms of this License in conveying all material for which you do not
|
||||||
|
control copyright. Those thus making or running the covered works for
|
||||||
|
you must do so exclusively on your behalf, under your direction and
|
||||||
|
control, on terms that prohibit them from making any copies of your
|
||||||
|
copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under the
|
||||||
|
conditions stated below. Sublicensing is not allowed; section 10 makes
|
||||||
|
it unnecessary.
|
||||||
|
|
||||||
|
#### 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such
|
||||||
|
circumvention is effected by exercising rights under this License with
|
||||||
|
respect to the covered work, and you disclaim any intention to limit
|
||||||
|
operation or modification of the work as a means of enforcing, against
|
||||||
|
the work's users, your or third parties' legal rights to forbid
|
||||||
|
circumvention of technological measures.
|
||||||
|
|
||||||
|
#### 4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
#### 5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
- a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
- b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under
|
||||||
|
section 7. This requirement modifies the requirement in section 4
|
||||||
|
to "keep intact all notices".
|
||||||
|
- c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
- d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
#### 6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms of
|
||||||
|
sections 4 and 5, provided that you also convey the machine-readable
|
||||||
|
Corresponding Source under the terms of this License, in one of these
|
||||||
|
ways:
|
||||||
|
|
||||||
|
- a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
- b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the Corresponding
|
||||||
|
Source from a network server at no charge.
|
||||||
|
- c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
- d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
- e) Convey the object code using peer-to-peer transmission,
|
||||||
|
provided you inform other peers where the object code and
|
||||||
|
Corresponding Source of the work are being offered to the general
|
||||||
|
public at no charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal,
|
||||||
|
family, or household purposes, or (2) anything designed or sold for
|
||||||
|
incorporation into a dwelling. In determining whether a product is a
|
||||||
|
consumer product, doubtful cases shall be resolved in favor of
|
||||||
|
coverage. For a particular product received by a particular user,
|
||||||
|
"normally used" refers to a typical or common use of that class of
|
||||||
|
product, regardless of the status of the particular user or of the way
|
||||||
|
in which the particular user actually uses, or expects or is expected
|
||||||
|
to use, the product. A product is a consumer product regardless of
|
||||||
|
whether the product has substantial commercial, industrial or
|
||||||
|
non-consumer uses, unless such uses represent the only significant
|
||||||
|
mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to
|
||||||
|
install and execute modified versions of a covered work in that User
|
||||||
|
Product from a modified version of its Corresponding Source. The
|
||||||
|
information must suffice to ensure that the continued functioning of
|
||||||
|
the modified object code is in no case prevented or interfered with
|
||||||
|
solely because modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or
|
||||||
|
updates for a work that has been modified or installed by the
|
||||||
|
recipient, or for the User Product in which it has been modified or
|
||||||
|
installed. Access to a network may be denied when the modification
|
||||||
|
itself materially and adversely affects the operation of the network
|
||||||
|
or violates the rules and protocols for communication across the
|
||||||
|
network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
#### 7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders
|
||||||
|
of that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
- a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
- b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
- c) Prohibiting misrepresentation of the origin of that material,
|
||||||
|
or requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
- d) Limiting the use for publicity purposes of names of licensors
|
||||||
|
or authors of the material; or
|
||||||
|
- e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
- f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions
|
||||||
|
of it) with contractual assumptions of liability to the recipient,
|
||||||
|
for any liability that these contractual assumptions directly
|
||||||
|
impose on those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions; the
|
||||||
|
above requirements apply either way.
|
||||||
|
|
||||||
|
#### 8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your license
|
||||||
|
from a particular copyright holder is reinstated (a) provisionally,
|
||||||
|
unless and until the copyright holder explicitly and finally
|
||||||
|
terminates your license, and (b) permanently, if the copyright holder
|
||||||
|
fails to notify you of the violation by some reasonable means prior to
|
||||||
|
60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
#### 9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or run
|
||||||
|
a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
#### 10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
#### 11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims owned
|
||||||
|
or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within the
|
||||||
|
scope of its coverage, prohibits the exercise of, or is conditioned on
|
||||||
|
the non-exercise of one or more of the rights that are specifically
|
||||||
|
granted under this License. You may not convey a covered work if you
|
||||||
|
are a party to an arrangement with a third party that is in the
|
||||||
|
business of distributing software, under which you make payment to the
|
||||||
|
third party based on the extent of your activity of conveying the
|
||||||
|
work, and under which the third party grants, to any of the parties
|
||||||
|
who would receive the covered work from you, a discriminatory patent
|
||||||
|
license (a) in connection with copies of the covered work conveyed by
|
||||||
|
you (or copies made from those copies), or (b) primarily for and in
|
||||||
|
connection with specific products or compilations that contain the
|
||||||
|
covered work, unless you entered into that arrangement, or that patent
|
||||||
|
license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
#### 12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under
|
||||||
|
this License and any other pertinent obligations, then as a
|
||||||
|
consequence you may not convey it at all. For example, if you agree to
|
||||||
|
terms that obligate you to collect a royalty for further conveying
|
||||||
|
from those to whom you convey the Program, the only way you could
|
||||||
|
satisfy both those terms and this License would be to refrain entirely
|
||||||
|
from conveying the Program.
|
||||||
|
|
||||||
|
#### 13. Remote Network Interaction; Use with the GNU General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, if you modify the
|
||||||
|
Program, your modified version must prominently offer all users
|
||||||
|
interacting with it remotely through a computer network (if your
|
||||||
|
version supports such interaction) an opportunity to receive the
|
||||||
|
Corresponding Source of your version by providing access to the
|
||||||
|
Corresponding Source from a network server at no charge, through some
|
||||||
|
standard or customary means of facilitating copying of software. This
|
||||||
|
Corresponding Source shall include the Corresponding Source for any
|
||||||
|
work covered by version 3 of the GNU General Public License that is
|
||||||
|
incorporated pursuant to the following paragraph.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the work with which it is combined will remain governed by version
|
||||||
|
3 of the GNU General Public License.
|
||||||
|
|
||||||
|
#### 14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the GNU Affero General Public License from time to time. Such new
|
||||||
|
versions will be similar in spirit to the present version, but may
|
||||||
|
differ in detail to address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies that a certain numbered version of the GNU Affero General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU Affero General Public License, you may choose any version ever
|
||||||
|
published by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future versions
|
||||||
|
of the GNU Affero General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
#### 15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
|
||||||
|
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
|
||||||
|
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
|
||||||
|
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
|
||||||
|
CORRECTION.
|
||||||
|
|
||||||
|
#### 16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
|
||||||
|
CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
|
||||||
|
ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
|
||||||
|
NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
|
||||||
|
LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
|
||||||
|
TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
|
||||||
|
PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
#### 17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
### How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these
|
||||||
|
terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest to
|
||||||
|
attach them to the start of each source file to most effectively state
|
||||||
|
the exclusion of warranty; and each file should have at least the
|
||||||
|
"copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Affero General Public License as
|
||||||
|
published by the Free Software Foundation, either version 3 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper
|
||||||
|
mail.
|
||||||
|
|
||||||
|
If your software can interact with users remotely through a computer
|
||||||
|
network, you should also make sure that it provides a way for users to
|
||||||
|
get its source. For example, if your program is a web application, its
|
||||||
|
interface could display a "Source" link that leads users to an archive
|
||||||
|
of the code. There are many ways you could offer source, and different
|
||||||
|
solutions will be better for different programs; see section 13 for
|
||||||
|
the specific requirements.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. For more information on this, and how to apply and follow
|
||||||
|
the GNU AGPL, see <https://www.gnu.org/licenses/>.
|
37
README.md
37
README.md
@ -4,18 +4,12 @@ EN: A libre polling software made by contributors around the French association
|
|||||||
This version uses a brand new backend API.
|
This version uses a brand new backend API.
|
||||||
|
|
||||||
## Pour débuter - getting started
|
## Pour débuter - getting started
|
||||||
[lire la doc pour débuter votre Funky Framadate](doc/GETTING_STARTED.md)
|
[lire la doc pour débuter votre Funky Framadate](docs/GETTING_STARTED.md)
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
FR: Toute la documentation est disponible [dans le dossier "doc"](/doc), principalement en Français.
|
FR: Toute la documentation est disponible [dans le dossier "doc"](/docs), principalement en Français.
|
||||||
EN: All documentation is available in the "doc" folder, mainly in French because reasons.
|
EN: All documentation is available in the "doc" folder, mainly in French because reasons.
|
||||||
* Meeting notes
|
|
||||||
* Getting Started (yarn start / npm start)
|
|
||||||
* How to contribute
|
|
||||||
* Architecture
|
|
||||||
* Translation i18n
|
|
||||||
* Accesibility
|
|
||||||
* Licence GNU affero V3
|
|
||||||
|
|
||||||
# Version funky framadate
|
# Version funky framadate
|
||||||
|
|
||||||
@ -35,7 +29,8 @@ EN: All documentation is available in the "doc" folder, mainly in French because
|
|||||||
|
|
||||||
# Exemple de maquette de la nouvelle version
|
# Exemple de maquette de la nouvelle version
|
||||||
|
|
||||||
![funky_framadate_maquette](uploads/535da7c3a5ce5fae67b2b497bdc4631d/funky_framadate_maquette.png)
|
![funky_framadate_maquette](docs/img/colors_framadate_funky.png)
|
||||||
|
![funky_framadate_maquette](docs/img/framdate_funky_design.png)
|
||||||
|
|
||||||
## LIBRARIES USED
|
## LIBRARIES USED
|
||||||
|
|
||||||
@ -68,25 +63,3 @@ EN: All documentation is available in the "doc" folder, mainly in French because
|
|||||||
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.1.
|
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.1.
|
||||||
# Framadate
|
# Framadate
|
||||||
|
|
||||||
|
|
||||||
## Code scaffolding
|
|
||||||
|
|
||||||
Run `ng generate component component-choice_label` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
|
|
||||||
|
|
||||||
## Build
|
|
||||||
|
|
||||||
Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.
|
|
||||||
|
|
||||||
## Running unit tests
|
|
||||||
|
|
||||||
Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
||||||
|
|
||||||
## Running end-to-end tests
|
|
||||||
|
|
||||||
Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
|
|
||||||
|
|
||||||
## Further help
|
|
||||||
|
|
||||||
Before using ng for the first time in this project, use `npm i` to install needed npm modules.
|
|
||||||
|
|
||||||
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
|
|
||||||
|
3
SUMMARY_CHANGELOG.md
Normal file
3
SUMMARY_CHANGELOG.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Résumé de Changelog
|
||||||
|
|
||||||
|
Le détail se trouve dans [CHANGELOG.md]
|
@ -1,5 +0,0 @@
|
|||||||
# Todo - liste des choses à faire
|
|
||||||
|
|
||||||
|
|
||||||
# Choses faites
|
|
||||||
voir le [changelog.md]
|
|
@ -1 +0,0 @@
|
|||||||
# Change log
|
|
660
docs/LICENSE.en.md
Normal file
660
docs/LICENSE.en.md
Normal file
@ -0,0 +1,660 @@
|
|||||||
|
### GNU AFFERO GENERAL PUBLIC LICENSE
|
||||||
|
|
||||||
|
Version 3, 19 November 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc.
|
||||||
|
<https://fsf.org/>
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies of this
|
||||||
|
license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
### Preamble
|
||||||
|
|
||||||
|
The GNU Affero General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works, specifically designed to ensure
|
||||||
|
cooperation with the community in the case of network server software.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
our General Public Licenses are intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains
|
||||||
|
free software for all its users.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
Developers that use our General Public Licenses protect your rights
|
||||||
|
with two steps: (1) assert copyright on the software, and (2) offer
|
||||||
|
you this License which gives you legal permission to copy, distribute
|
||||||
|
and/or modify the software.
|
||||||
|
|
||||||
|
A secondary benefit of defending all users' freedom is that
|
||||||
|
improvements made in alternate versions of the program, if they
|
||||||
|
receive widespread use, become available for other developers to
|
||||||
|
incorporate. Many developers of free software are heartened and
|
||||||
|
encouraged by the resulting cooperation. However, in the case of
|
||||||
|
software used on network servers, this result may fail to come about.
|
||||||
|
The GNU General Public License permits making a modified version and
|
||||||
|
letting the public access it on a server without ever releasing its
|
||||||
|
source code to the public.
|
||||||
|
|
||||||
|
The GNU Affero General Public License is designed specifically to
|
||||||
|
ensure that, in such cases, the modified source code becomes available
|
||||||
|
to the community. It requires the operator of a network server to
|
||||||
|
provide the source code of the modified version running there to the
|
||||||
|
users of that server. Therefore, public use of a modified version, on
|
||||||
|
a publicly accessible server, gives the public access to the source
|
||||||
|
code of the modified version.
|
||||||
|
|
||||||
|
An older license, called the Affero General Public License and
|
||||||
|
published by Affero, was designed to accomplish similar goals. This is
|
||||||
|
a different license, not a version of the Affero GPL, but Affero has
|
||||||
|
released a new version of the Affero GPL which permits relicensing
|
||||||
|
under this license.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
### TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
#### 0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU Affero General Public
|
||||||
|
License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds
|
||||||
|
of works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of
|
||||||
|
an exact copy. The resulting work is called a "modified version" of
|
||||||
|
the earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user
|
||||||
|
through a computer network, with no transfer of a copy, is not
|
||||||
|
conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices" to
|
||||||
|
the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
#### 1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work for
|
||||||
|
making modifications to it. "Object code" means any non-source form of
|
||||||
|
a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users can
|
||||||
|
regenerate automatically from other parts of the Corresponding Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that same
|
||||||
|
work.
|
||||||
|
|
||||||
|
#### 2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not convey,
|
||||||
|
without conditions so long as your license otherwise remains in force.
|
||||||
|
You may convey covered works to others for the sole purpose of having
|
||||||
|
them make modifications exclusively for you, or provide you with
|
||||||
|
facilities for running those works, provided that you comply with the
|
||||||
|
terms of this License in conveying all material for which you do not
|
||||||
|
control copyright. Those thus making or running the covered works for
|
||||||
|
you must do so exclusively on your behalf, under your direction and
|
||||||
|
control, on terms that prohibit them from making any copies of your
|
||||||
|
copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under the
|
||||||
|
conditions stated below. Sublicensing is not allowed; section 10 makes
|
||||||
|
it unnecessary.
|
||||||
|
|
||||||
|
#### 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such
|
||||||
|
circumvention is effected by exercising rights under this License with
|
||||||
|
respect to the covered work, and you disclaim any intention to limit
|
||||||
|
operation or modification of the work as a means of enforcing, against
|
||||||
|
the work's users, your or third parties' legal rights to forbid
|
||||||
|
circumvention of technological measures.
|
||||||
|
|
||||||
|
#### 4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
#### 5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
- a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
- b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under
|
||||||
|
section 7. This requirement modifies the requirement in section 4
|
||||||
|
to "keep intact all notices".
|
||||||
|
- c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
- d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
#### 6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms of
|
||||||
|
sections 4 and 5, provided that you also convey the machine-readable
|
||||||
|
Corresponding Source under the terms of this License, in one of these
|
||||||
|
ways:
|
||||||
|
|
||||||
|
- a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
- b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the Corresponding
|
||||||
|
Source from a network server at no charge.
|
||||||
|
- c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
- d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
- e) Convey the object code using peer-to-peer transmission,
|
||||||
|
provided you inform other peers where the object code and
|
||||||
|
Corresponding Source of the work are being offered to the general
|
||||||
|
public at no charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal,
|
||||||
|
family, or household purposes, or (2) anything designed or sold for
|
||||||
|
incorporation into a dwelling. In determining whether a product is a
|
||||||
|
consumer product, doubtful cases shall be resolved in favor of
|
||||||
|
coverage. For a particular product received by a particular user,
|
||||||
|
"normally used" refers to a typical or common use of that class of
|
||||||
|
product, regardless of the status of the particular user or of the way
|
||||||
|
in which the particular user actually uses, or expects or is expected
|
||||||
|
to use, the product. A product is a consumer product regardless of
|
||||||
|
whether the product has substantial commercial, industrial or
|
||||||
|
non-consumer uses, unless such uses represent the only significant
|
||||||
|
mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to
|
||||||
|
install and execute modified versions of a covered work in that User
|
||||||
|
Product from a modified version of its Corresponding Source. The
|
||||||
|
information must suffice to ensure that the continued functioning of
|
||||||
|
the modified object code is in no case prevented or interfered with
|
||||||
|
solely because modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or
|
||||||
|
updates for a work that has been modified or installed by the
|
||||||
|
recipient, or for the User Product in which it has been modified or
|
||||||
|
installed. Access to a network may be denied when the modification
|
||||||
|
itself materially and adversely affects the operation of the network
|
||||||
|
or violates the rules and protocols for communication across the
|
||||||
|
network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
#### 7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders
|
||||||
|
of that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
- a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
- b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
- c) Prohibiting misrepresentation of the origin of that material,
|
||||||
|
or requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
- d) Limiting the use for publicity purposes of names of licensors
|
||||||
|
or authors of the material; or
|
||||||
|
- e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
- f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions
|
||||||
|
of it) with contractual assumptions of liability to the recipient,
|
||||||
|
for any liability that these contractual assumptions directly
|
||||||
|
impose on those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions; the
|
||||||
|
above requirements apply either way.
|
||||||
|
|
||||||
|
#### 8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your license
|
||||||
|
from a particular copyright holder is reinstated (a) provisionally,
|
||||||
|
unless and until the copyright holder explicitly and finally
|
||||||
|
terminates your license, and (b) permanently, if the copyright holder
|
||||||
|
fails to notify you of the violation by some reasonable means prior to
|
||||||
|
60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
#### 9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or run
|
||||||
|
a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
#### 10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
#### 11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims owned
|
||||||
|
or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within the
|
||||||
|
scope of its coverage, prohibits the exercise of, or is conditioned on
|
||||||
|
the non-exercise of one or more of the rights that are specifically
|
||||||
|
granted under this License. You may not convey a covered work if you
|
||||||
|
are a party to an arrangement with a third party that is in the
|
||||||
|
business of distributing software, under which you make payment to the
|
||||||
|
third party based on the extent of your activity of conveying the
|
||||||
|
work, and under which the third party grants, to any of the parties
|
||||||
|
who would receive the covered work from you, a discriminatory patent
|
||||||
|
license (a) in connection with copies of the covered work conveyed by
|
||||||
|
you (or copies made from those copies), or (b) primarily for and in
|
||||||
|
connection with specific products or compilations that contain the
|
||||||
|
covered work, unless you entered into that arrangement, or that patent
|
||||||
|
license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
#### 12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under
|
||||||
|
this License and any other pertinent obligations, then as a
|
||||||
|
consequence you may not convey it at all. For example, if you agree to
|
||||||
|
terms that obligate you to collect a royalty for further conveying
|
||||||
|
from those to whom you convey the Program, the only way you could
|
||||||
|
satisfy both those terms and this License would be to refrain entirely
|
||||||
|
from conveying the Program.
|
||||||
|
|
||||||
|
#### 13. Remote Network Interaction; Use with the GNU General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, if you modify the
|
||||||
|
Program, your modified version must prominently offer all users
|
||||||
|
interacting with it remotely through a computer network (if your
|
||||||
|
version supports such interaction) an opportunity to receive the
|
||||||
|
Corresponding Source of your version by providing access to the
|
||||||
|
Corresponding Source from a network server at no charge, through some
|
||||||
|
standard or customary means of facilitating copying of software. This
|
||||||
|
Corresponding Source shall include the Corresponding Source for any
|
||||||
|
work covered by version 3 of the GNU General Public License that is
|
||||||
|
incorporated pursuant to the following paragraph.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the work with which it is combined will remain governed by version
|
||||||
|
3 of the GNU General Public License.
|
||||||
|
|
||||||
|
#### 14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the GNU Affero General Public License from time to time. Such new
|
||||||
|
versions will be similar in spirit to the present version, but may
|
||||||
|
differ in detail to address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies that a certain numbered version of the GNU Affero General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU Affero General Public License, you may choose any version ever
|
||||||
|
published by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future versions
|
||||||
|
of the GNU Affero General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
#### 15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
|
||||||
|
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
|
||||||
|
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
|
||||||
|
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
|
||||||
|
CORRECTION.
|
||||||
|
|
||||||
|
#### 16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
|
||||||
|
CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
|
||||||
|
ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
|
||||||
|
NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
|
||||||
|
LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
|
||||||
|
TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
|
||||||
|
PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
#### 17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
### How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these
|
||||||
|
terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest to
|
||||||
|
attach them to the start of each source file to most effectively state
|
||||||
|
the exclusion of warranty; and each file should have at least the
|
||||||
|
"copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Affero General Public License as
|
||||||
|
published by the Free Software Foundation, either version 3 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper
|
||||||
|
mail.
|
||||||
|
|
||||||
|
If your software can interact with users remotely through a computer
|
||||||
|
network, you should also make sure that it provides a way for users to
|
||||||
|
get its source. For example, if your program is a web application, its
|
||||||
|
interface could display a "Source" link that leads users to an archive
|
||||||
|
of the code. There are many ways you could offer source, and different
|
||||||
|
solutions will be better for different programs; see section 13 for
|
||||||
|
the specific requirements.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. For more information on this, and how to apply and follow
|
||||||
|
the GNU AGPL, see <https://www.gnu.org/licenses/>.
|
28
docs/TODO.md
Normal file
28
docs/TODO.md
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# Todo - liste des choses à faire
|
||||||
|
## Idées pour de futures améliorations (pertinence à vérifier)
|
||||||
|
|
||||||
|
* Gagner en vie privée en chiffrant certaines informations ? Stockage zéro knowledge avec un chiffrement robuste à courbe elliptique.
|
||||||
|
* À réfléchir : permettre à Framadate de faire entrer à des gens plusieurs plages de temps de disponibilité et le service déduit quelles sont les plages de temps favorables (calcul d'intersection sur des lignes discontinues). Cela pourrait être avec divers niveaux de détail. Comme https://omnipointment.com/ (qui est un logiciel privateur)
|
||||||
|
* SSO du fédiverse ?
|
||||||
|
|
||||||
|
# Tableau des avancements
|
||||||
|
https://framagit.org/framasoft/framadate/funky-framadate-front/-/boards
|
||||||
|
|
||||||
|
|
||||||
|
# Choses faites
|
||||||
|
voir le [changelog.md]
|
||||||
|
Les idées et rapports de bugs sont disponibles dans [le tableau des Issues](https://framagit.org/framasoft/framadate/funky-framadate-front/-/boards) sur la forge logicielle.
|
||||||
|
|
||||||
|
## principales
|
||||||
|
|
||||||
|
* Accessibilité renforcée.
|
||||||
|
* Adapté aussi bien sur mobile que grands écrans à haute ou faible densité de pixels.
|
||||||
|
* Tests unitaires et end-to-end.
|
||||||
|
* Couverture de test.
|
||||||
|
* Choix de réponses possibles. Proposer de ne répondre que « oui » ou rien, ou aller dans la nuance en proposant « oui », « peut-être », « non », « ? ». *# Redondance ou le choix de réponses possibles de la première phrase concerne un autre choix ?*
|
||||||
|
* Insertion d'images dans le sondage de type texte, avec des URL uniquement. Une seule image par title possible ou rien.
|
||||||
|
* Thème sombre.
|
||||||
|
* Duplication de sondage à partir d'un autre.
|
||||||
|
* Limiter le nombre de participants maximum
|
||||||
|
|
||||||
|
|
1
docs/admin-guide/install.txt
Normal file
1
docs/admin-guide/install.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
# Installation
|
0
docs/admin-guide/requirements.txt
Normal file
0
docs/admin-guide/requirements.txt
Normal file
24
docs/angular.md
Normal file
24
docs/angular.md
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Angular
|
||||||
|
All doc for Angular is available under https://www.angular.io
|
||||||
|
|
||||||
|
## Code scaffolding
|
||||||
|
|
||||||
|
Run `ng generate component component-choice_label` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.
|
||||||
|
|
||||||
|
## Running unit tests
|
||||||
|
|
||||||
|
Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
||||||
|
|
||||||
|
## Running end-to-end tests
|
||||||
|
|
||||||
|
Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
|
||||||
|
|
||||||
|
## Further help
|
||||||
|
|
||||||
|
Before using ng for the first time in this project, use `npm i` to install needed npm modules.
|
||||||
|
|
||||||
|
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
|
@ -1,4 +1,4 @@
|
|||||||
// TODO: File to be deleted : just temporary documentation of backend API endpoints
|
# temporary documentation of backend API endpoints
|
||||||
|
|
||||||
------------------------------------------ ---------- -------- ------ ------------------------------------------------
|
------------------------------------------ ---------- -------- ------ ------------------------------------------------
|
||||||
Name Method Scheme Host Path
|
Name Method Scheme Host Path
|
@ -11,3 +11,6 @@ Chaque fichier de traduction est déclaré dans le [AppModule](../../src/app/app
|
|||||||
|
|
||||||
Utilisez des sous groupes dans vos traductions afin de mieux segmenter les chaines de caractère par page et selon le sens qu'elles sous tendent.
|
Utilisez des sous groupes dans vos traductions afin de mieux segmenter les chaines de caractère par page et selon le sens qu'elles sous tendent.
|
||||||
|
|
||||||
|
## Traduction de la documentation mkdocs
|
||||||
|
|
||||||
|
voir ici https://www.mkdocs.org/user-guide/configuration/#lang
|
@ -2,10 +2,6 @@
|
|||||||
|
|
||||||
[[_TOC_]]
|
[[_TOC_]]
|
||||||
|
|
||||||
|
|
||||||
![Diagramme des cas d'utilisations décrits dans la suite du document](uploads/uml/diagramme_cas_utilisation.png)
|
|
||||||
|
|
||||||
|
|
||||||
# Glossaire
|
# Glossaire
|
||||||
|
|
||||||
| Terme | Signification |
|
| Terme | Signification |
|
4
docs/changelog.md
Normal file
4
docs/changelog.md
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# Change log
|
||||||
|
|
||||||
|
## 2021-05-17
|
||||||
|
Documentation générée avec mkdocs
|
@ -1,11 +1,11 @@
|
|||||||
# Comment contribuer à Framadate funky ?
|
# Comment contribuer à Framadate funky ?
|
||||||
Il existe des tas de façons de contribuer à un logiciel libre comme Framadate. Vous pouvez __discuter__ avec d'autres personnes de ce que vous souhaiteriez voir naître dans le logiciel, __essayer__ de l'utiliser dans sa version expérimentale, __mettre en place une démo__ ou un service publiquement utilisable, __écrire__ des modifications de code, proposer de l'aide de toute sorte, [traduire les textes](cadrage/i18n.md), vérifier l'accessibilité, lire la [documentation d'architecture](../doc/cadrage/architecture.md) etc...
|
Il existe des tas de façons de contribuer à un logiciel libre comme Framadate. Vous pouvez __discuter__ avec d'autres personnes de ce que vous souhaiteriez voir naître dans le logiciel, __essayer__ de l'utiliser dans sa version expérimentale, __mettre en place une démo__ ou un service publiquement utilisable, __écrire__ des modifications de code, proposer de l'aide de toute sorte, [traduire les textes](../cadrage/i18n.md), vérifier l'accessibilité, lire la [documentation d'architecture](../cadrage/architecture.md) etc...
|
||||||
|
|
||||||
* Avoir un compte Framateam, et Framagit si vous souhaitez contribuer au code
|
* Avoir un compte Framateam, et Framagit si vous souhaitez contribuer au code
|
||||||
* Examiner les tickets
|
* Examiner les tickets
|
||||||
Discuter avec les autres membres participant, sur un ticket en particulier et aussi dans les canaux de framateam
|
Discuter avec les autres membres participant, sur un ticket en particulier et aussi dans les canaux de framateam
|
||||||
* Nous avons créé deux canaux: un pour les discussions générales, et un autre pour les discussions techniques de dev. Prenez soin de bien cibler le canal dans lequel vous communiquez afin de ne pas faire peur aux gens qui ne codent pas et qui souhaitent contribuer de toutes les autres façons.
|
* Nous avons créé deux canaux: un pour les discussions générales, et un autre pour les discussions techniques de dev. Prenez soin de bien cibler le canal dans lequel vous communiquez afin de ne pas faire peur aux gens qui ne codent pas et qui souhaitent contribuer de toutes les autres façons.
|
||||||
* Une fois d'accord avec les autres, mettre à jour votre dépot de travail local. Voir [la doc d'installation / getting started](GETTING_STARTED.md) à ce sujet.
|
* Une fois d'accord avec les autres, mettre à jour votre dépot de travail local. Voir [la doc d'installation / getting started](../GETTING_STARTED.md) à ce sujet.
|
||||||
* Utiliser la branche `develop`
|
* Utiliser la branche `develop`
|
||||||
```
|
```
|
||||||
git checkout develop
|
git checkout develop
|
35
docs/dev-guide/Issue_template.md
Normal file
35
docs/dev-guide/Issue_template.md
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
## Résumé
|
||||||
|
|
||||||
|
(Summarize the bug encountered concisely)
|
||||||
|
|
||||||
|
## Steps to reproduce
|
||||||
|
|
||||||
|
(How one can reproduce the issue - this is very important)
|
||||||
|
|
||||||
|
## Example Project
|
||||||
|
|
||||||
|
(If possible, please create an example project here on GitLab.com that exhibits the problematic
|
||||||
|
behavior, and link to it here in the bug report.
|
||||||
|
If you are using an older version of GitLab, this will also determine whether the bug has been fixed
|
||||||
|
in a more recent version)
|
||||||
|
|
||||||
|
## What is the current bug behavior?
|
||||||
|
|
||||||
|
(What actually happens)
|
||||||
|
|
||||||
|
## What is the expected correct behavior?
|
||||||
|
|
||||||
|
(What you should see instead)
|
||||||
|
|
||||||
|
## Relevant logs and/or screenshots
|
||||||
|
|
||||||
|
(Paste any relevant logs - please use code blocks (```) to format console output, logs, and code, as
|
||||||
|
it's very hard to read otherwise.)
|
||||||
|
|
||||||
|
## Possible fixes
|
||||||
|
|
||||||
|
(If you can, link to the line of code that might be responsible for the problem)
|
||||||
|
|
||||||
|
/label ~bug ~reproduced ~needs-investigation
|
||||||
|
/cc @project-manager
|
||||||
|
/assign @qa-tester
|
BIN
docs/img/colors_framadate_funky.png
Normal file
BIN
docs/img/colors_framadate_funky.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 64 KiB |
80
docs/img/date-poll-api-schema-diagram.uml
Normal file
80
docs/img/date-poll-api-schema-diagram.uml
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Diagram>
|
||||||
|
<ID>DATABASE</ID>
|
||||||
|
<OriginalElement>199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.choice</OriginalElement>
|
||||||
|
<nodes>
|
||||||
|
<node x="273.0" y="1219.0">199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.choice</node>
|
||||||
|
<node x="0.0" y="1238.0">199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.stack_of_votes</node>
|
||||||
|
<node x="230.453125" y="1535.0">199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.vote</node>
|
||||||
|
<node x="280.5" y="0.0">199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.owner</node>
|
||||||
|
<node x="226.453125" y="333.0">199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.poll</node>
|
||||||
|
<node x="570.75" y="1200.0">199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.comment</node>
|
||||||
|
</nodes>
|
||||||
|
<notes />
|
||||||
|
<edges>
|
||||||
|
<edge source="199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.comment" target="199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.poll" relationship="REFERENCES">
|
||||||
|
<point x="-65.0" y="-141.5" />
|
||||||
|
<point x="635.75" y="1174.0" />
|
||||||
|
<point x="468.953125" y="1174.0" />
|
||||||
|
<point x="0.0" y="407.5" />
|
||||||
|
</edge>
|
||||||
|
<edge source="199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.stack_of_votes" target="199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.poll" relationship="REFERENCES">
|
||||||
|
<point x="63.25" y="-103.5" />
|
||||||
|
<point x="189.75" y="1174.0" />
|
||||||
|
<point x="468.953125" y="1174.0" />
|
||||||
|
<point x="0.0" y="407.5" />
|
||||||
|
</edge>
|
||||||
|
<edge source="199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.vote" target="199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.poll" relationship="REFERENCES">
|
||||||
|
<point x="97.33333333333331" y="-141.5" />
|
||||||
|
<point x="473.7864583333333" y="1509.0" />
|
||||||
|
<point x="536.5" y="1509.0" />
|
||||||
|
<point x="536.5" y="1174.0" />
|
||||||
|
<point x="468.953125" y="1174.0" />
|
||||||
|
<point x="0.0" y="407.5" />
|
||||||
|
</edge>
|
||||||
|
<edge source="199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.stack_of_votes" target="199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.owner" relationship="REFERENCES">
|
||||||
|
<point x="-63.25" y="-103.5" />
|
||||||
|
<point x="63.25" y="308.0" />
|
||||||
|
<point x="468.0" y="308.0" />
|
||||||
|
<point x="0.0" y="141.5" />
|
||||||
|
</edge>
|
||||||
|
<edge source="199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.choice" target="199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.poll" relationship="REFERENCES">
|
||||||
|
<point x="0.0" y="-122.5" />
|
||||||
|
<point x="399.5" y="1174.0" />
|
||||||
|
<point x="468.953125" y="1174.0" />
|
||||||
|
<point x="0.0" y="407.5" />
|
||||||
|
</edge>
|
||||||
|
<edge source="199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.vote" target="199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.choice" relationship="REFERENCES">
|
||||||
|
<point x="0.0" y="-141.5" />
|
||||||
|
<point x="376.453125" y="1509.0" />
|
||||||
|
<point x="399.5" y="1509.0" />
|
||||||
|
<point x="0.0" y="122.5" />
|
||||||
|
</edge>
|
||||||
|
<edge source="199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.vote" target="199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.stack_of_votes" relationship="REFERENCES">
|
||||||
|
<point x="-97.33333333333331" y="-141.5" />
|
||||||
|
<point x="279.1197916666667" y="1509.0" />
|
||||||
|
<point x="126.5" y="1509.0" />
|
||||||
|
<point x="0.0" y="103.5" />
|
||||||
|
</edge>
|
||||||
|
<edge source="199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.comment" target="199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.owner" relationship="REFERENCES">
|
||||||
|
<point x="65.0" y="-141.5" />
|
||||||
|
<point x="765.75" y="308.0" />
|
||||||
|
<point x="468.0" y="308.0" />
|
||||||
|
<point x="0.0" y="141.5" />
|
||||||
|
</edge>
|
||||||
|
<edge source="199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.poll" target="199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.owner" relationship="REFERENCES">
|
||||||
|
<point x="0.0" y="-407.5" />
|
||||||
|
<point x="0.0" y="141.5" />
|
||||||
|
</edge>
|
||||||
|
</edges>
|
||||||
|
<settings layout="Hierarchic" zoom="0.45266594124047876" showDependencies="false" x="415.5" y="909.0" />
|
||||||
|
<SelectedNodes>
|
||||||
|
<node>199d9e19-a935-452f-b6e5-37ffdb194d55.TABLE:framadate_api.poll</node>
|
||||||
|
</SelectedNodes>
|
||||||
|
<Categories>
|
||||||
|
<Category>Columns</Category>
|
||||||
|
<Category>Key columns</Category>
|
||||||
|
<Category>Virtual foreign keys</Category>
|
||||||
|
</Categories>
|
||||||
|
</Diagram>
|
||||||
|
|
BIN
docs/img/date-poll-api-schema.png
Normal file
BIN
docs/img/date-poll-api-schema.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 178 KiB |
BIN
docs/img/framadate_funky_design.png
Normal file
BIN
docs/img/framadate_funky_design.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 442 KiB |
4
docs/index.en.md
Normal file
4
docs/index.en.md
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# Framadate - funky version
|
||||||
|
***
|
||||||
|
EN: A libre polling software made by contributors around the French association Framasoft.
|
||||||
|
This version uses a brand new backend API.ntributeurs de l'association Framasoft, avec une API backend.
|
66
docs/index.fr.md
Normal file
66
docs/index.fr.md
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
# Framadate - funky version
|
||||||
|
|
||||||
|
FR: Un logiciel libre de sondage fait par les contributeurs de l'association Framasoft, avec une API backend.
|
||||||
|
|
||||||
|
## Index
|
||||||
|
|
||||||
|
* Meeting notes
|
||||||
|
* Getting Started (yarn start / npm start)
|
||||||
|
* How to contribute
|
||||||
|
* Architecture
|
||||||
|
* Translation i18n
|
||||||
|
* 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.
|
||||||
|
|
||||||
|
## Pour débuter - getting started
|
||||||
|
[lire la doc pour débuter votre Funky Framadate](GETTING_STARTED.md)
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
FR: Toute la documentation est disponible [dans le dossier "doc"](/), principalement en Français.
|
||||||
|
EN: All documentation is available in the "doc" folder, mainly in French because reasons.
|
||||||
|
|
||||||
|
|
||||||
|
# Version funky framadate
|
||||||
|
|
||||||
|
* [Spécifications](cadrage/specifications-fonctionnelles)
|
||||||
|
* maquettes par @maiwann : https://scene.zeplin.io/project/5d4d83d68866d6522ff2ff10
|
||||||
|
* vidéo de démo des maquettes par @maiwann : https://nuage.maiwann.net/s/JRRHTR9D2akMAa7
|
||||||
|
* discussions sur framateam canal général : https://framateam.org/ux-framatrucs/channaels/framadate
|
||||||
|
* discussions techniques côté développeurs : https://framateam.org/ux-framatrucs/channels/framadate-dev
|
||||||
|
* [notes de réunion](reunions/notes-de-reunion)
|
||||||
|
* [traductions](traductions)
|
||||||
|
|
||||||
|
|
||||||
|
# Documentations sur Angular
|
||||||
|
|
||||||
|
* `{- sur sass -}` (on va utiliser CSS, si angular permet d'avoir des variables CSS, @newick)
|
||||||
|
|
||||||
|
|
||||||
|
# Exemple de maquette de la nouvelle version
|
||||||
|
|
||||||
|
![schéma de données](img/date-poll-api-schema.png)
|
||||||
|
[voir le schéma UML](img/date-poll-api-schema-diagram.uml)
|
||||||
|
|
||||||
|
--
|
||||||
|
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.1.
|
||||||
|
For full documentation on mkdocs visit [mkdocs.org](https://www.mkdocs.org).
|
||||||
|
notes-de-reunion)
|
||||||
|
* [traductions](traductions)
|
||||||
|
|
||||||
|
|
||||||
|
# Documentations sur Angular
|
||||||
|
|
||||||
|
* `{- sur sass -}` (on va utiliser CSS, si angular permet d'avoir des variables CSS, @newick)
|
||||||
|
|
||||||
|
# Exemple de maquette de la nouvelle version
|
||||||
|
|
||||||
|
![funky_framadate_maquette](uploads/535da7c3a5ce5fae67b2b497bdc4631d/funky_framadate_maquette.png)
|
||||||
|
|
||||||
|
|
||||||
|
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.1.
|
||||||
|
For full documentation on mkdocs visit [mkdocs.org](https://www.mkdocs.org).
|
27
docs/index.md
Normal file
27
docs/index.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# 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.ntributeurs de l'association Framasoft, avec une API backend.
|
||||||
|
|
||||||
|
## Index
|
||||||
|
|
||||||
|
* Meeting notes
|
||||||
|
* Getting Started (yarn start / npm start)
|
||||||
|
* How to contribute
|
||||||
|
* Architecture
|
||||||
|
* Translation i18n
|
||||||
|
* 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.
|
||||||
|
|
||||||
|
## Pour débuter - getting started
|
||||||
|
[lire la doc pour débuter votre Funky Framadate](GETTING_STARTED.md)
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
voilà voilà
|
28
docs/libs.md
Normal file
28
docs/libs.md
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# LIBRARIES USED
|
||||||
|
|
||||||
|
| status | lib choice_label | usage |
|
||||||
|
| :-------------: | -------------------------------------------------------------- | --------------------------------------------------------- |
|
||||||
|
| | [axios](https://github.com/axios/axios) | http client |
|
||||||
|
| | [bulma](https://bulma.io/) | CSS framework |
|
||||||
|
| | [chart.js](https://www.chartjs.org/) | PrimeNG solution for graphs. (Chart.js installs MomentJS) |
|
||||||
|
| | [compodoc](https://compodoc.app/) | Generate technic documentation |
|
||||||
|
| | ESlint, Prettier, Lint-staged | Format & lint code |
|
||||||
|
| | [fork-awesome](https://forkaweso.me) | Icons collection |
|
||||||
|
| | [fullcalendar](https://fullcalendar.io/docs/initialize-es6) | PrimeNG solution to manage & display calendars |
|
||||||
|
| | [husky](https://www.npmjs.com/package/husky) | Hook actions on commit |
|
||||||
|
| | [jest](https://jestjs.io/) | test engine |
|
||||||
|
| | [json-server](https://www.npmjs.com/package/json-server) | local server for mocking data backend |
|
||||||
|
| removed | [locale-enum](https://www.npmjs.com/package/locale-enum) | enum of all locales |
|
||||||
|
| | [momentJS](https://momentjs.com/) | manipulate dates. (chartJS’s dependency) |
|
||||||
|
| to be installed | [ng2-charts](https://valor-software.com/ng2-charts/) | Manipulate graphs along with chart.js |
|
||||||
|
| | [ngx-clipboard](https://www.npmjs.com/package/ngx-clipboard) | Handle clipboard |
|
||||||
|
| | [ngx-markdown](https://www.npmjs.com/package/ngx-markdown) | markdown parser |
|
||||||
|
| | [ngx-webstorage](https://www.npmjs.com/package/ngx-webstorage) | handle localStorage & webStorage |
|
||||||
|
| | [primeNG](https://www.primefaces.org/primeng/) | UI components collection |
|
||||||
|
| | [quill](https://www.npmjs.com/package/quill) | powerful rich text editor. WYSIWYG. |
|
||||||
|
| to be installed | [short-uuid](https://www.npmjs.com/package/short-uuid) | generate uuid |
|
||||||
|
| removed | [storybook](https://storybook.js.org/) | StyleGuide UI |
|
||||||
|
| | [ts-mockito](https://www.npmjs.com/package/ts-mockito) | Mocks for testing. |
|
||||||
|
| to be removed | [uuid](https://www.npmjs.com/package/uuid) | generate uuid |
|
||||||
|
|
||||||
|
---
|
@ -31,9 +31,9 @@ https://framagit.org/framasoft/framadate/funky-framadate-front/-/boards
|
|||||||
|
|
||||||
## Ressources
|
## Ressources
|
||||||
|
|
||||||
* Discussion : https://framateam.org/ux-framatrucs/channels/framadate
|
* Discussion : [https://framateam.org/ux-framatrucs/channels/framadate]()
|
||||||
* Repo front/dev : https://framagit.org/framasoft/framadate/funky-framadate-front/tree/dev
|
* Repo front/dev : [https://framagit.org/framasoft/framadate/funky-framadate-front/tree/dev]()
|
||||||
* Repo back : https://framagit.org/framasoft/framadate/framadate
|
* Repo back : [https://framagit.org/framasoft/framadate/framadate ]()
|
||||||
* Maquettes Zeplin : demander l'accès à maiwann
|
* Maquettes Zeplin : demander l'accès à maiwann
|
||||||
* La démo : https://framadate-api.cipherbliss.com/
|
* La démo : [https://framadate-api.cipherbliss.com/]()
|
||||||
* Vidéo de présentation : https://nuage.maiwann.net/s/JRRHTR9D2akMAa7
|
* Vidéo de présentation : [https://nuage.maiwann.net/s/JRRHTR9D2akMAa7]()
|
@ -62,7 +62,7 @@ Il est difficile d'entrer dans le projet en absence de spécifications écrites.
|
|||||||
|
|
||||||
* Discussion : https://framateam.org/ux-framatrucs/channels/framadate
|
* Discussion : https://framateam.org/ux-framatrucs/channels/framadate
|
||||||
* Repo front/dev : https://framagit.org/framasoft/framadate/funky-framadate-front/tree/dev
|
* Repo front/dev : https://framagit.org/framasoft/framadate/funky-framadate-front/tree/dev
|
||||||
* Repo back : https://framagit.org/framasoft/framadate/framadate
|
* Repo back : https://framagit.org/tykayn/date-poll-api
|
||||||
* Maquettes Zeplin : https://scene.zeplin.io/project/5d4d83d68866d6522ff2ff10
|
* Maquettes Zeplin : https://scene.zeplin.io/project/5d4d83d68866d6522ff2ff10
|
||||||
* La démo : https://framadate-api.cipherbliss.com/
|
* La démo : https://framadate-api.cipherbliss.com/
|
||||||
* Vidéo de présentation : https://nuage.maiwann.net/s/JRRHTR9D2akMAa7
|
* Vidéo de présentation : https://nuage.maiwann.net/s/JRRHTR9D2akMAa7
|
44
docs/user-guide/history.md
Normal file
44
docs/user-guide/history.md
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
# What about Framadate v1?
|
||||||
|
source: https://framagit.org/framasoft/framadate/framadate/-/issues/545
|
||||||
|
TL;DR: The project is now in maintenance mode. Follow https://framagit.org/framasoft/framadate/funky-framadate-front and https://framagit.org/tykayn/date-poll-api
|
||||||
|
So I'm going to give a quick update on the status of this project.
|
||||||
|
History
|
||||||
|
|
||||||
|
|
||||||
|
2009/2010: The university of Strasbourg develops STUdS
|
||||||
|
|
||||||
|
May 2011: a Framasoft member forks STUdS into "opensondage" and cleans the code. They installs it for our own internal usage.
|
||||||
|
|
||||||
|
June 2011: Framasoft works again on STUdS/Opensondage, make it more "sexy" (mostly frontend work), the service is accessible publicly at https://framadate.org
|
||||||
|
|
||||||
|
|
||||||
|
2014: the project is transferred to an employee of Framasoft
|
||||||
|
There was a lot of work on the a11y front https://framablog.org/2014/11/26/framadate-nouvelle-version-accessible/ (in french)
|
||||||
|
|
||||||
|
2015: the project is handed to volunteers
|
||||||
|
version 1.0 came out https://framablog.org/2016/10/17/framadate-passage-en-v1-happy-hour-pour-tout-le-monde/ (in french)
|
||||||
|
|
||||||
|
2016: these volunteers are no longer active
|
||||||
|
|
||||||
|
2018: It's the beginning of multiple tentatives to rethink Framadate, including some work by a volunteer designer who produced some mockups.
|
||||||
|
|
||||||
|
2019: A physical reunion with myself and some volunteers (https://www.codeursenliberté.fr/entreprise/contribution_au_libre/ in french) produces what's now the 1.2.0 alpha release, but without further work, it's left abandoned (this is now the develop branch).
|
||||||
|
Around the same time, the poll table gets a UI improvement, which is hotpatched on framadate.org but still not merged here: !412
|
||||||
|
|
||||||
|
|
||||||
|
2016-2021: small contributions from Framasoft/myself and from some volunteers, including some students, bring a few minor versions.
|
||||||
|
A few UX improvements are added, but mostly frontend stuff.
|
||||||
|
The one thing that seems to survive from the multiple tentatives to reboot Framadate is a rewrite in Angular and Symfony: https://framagit.org/framasoft/framadate/funky-framadate-front and https://framagit.org/tykayn/date-poll-api
|
||||||
|
|
||||||
|
|
||||||
|
2021: A french organization (not sure if I can say who) wants to support Framadate and seems to plan to work on the project I've just mentioned above.
|
||||||
|
|
||||||
|
Current status
|
||||||
|
What important here is that we lie on a huge pile of technical dept (more or less well written PHP from ten years ago), because no one - including Framasoft and myself - can find time for Framadate.
|
||||||
|
Framasoft has currently a lot of ongoing projects, and does not wish to try to maintain this one any longer (not that it was done).
|
||||||
|
I could give maintainer rights to some people like @sbernhard who seems to have sent a number of MRs and seems interested in Framadate, but given the state of the project, it's probably better to fork it (it would also remove the frama part in the project name, which we would like to get rid of anyway). If you do, please inform us so that we may link to your own project.
|
||||||
|
Or you can also follow and maybe contribute to this rewrite https://framagit.org/framasoft/framadate/funky-framadate-front and https://framagit.org/tykayn/date-poll-api :)
|
||||||
|
If it become usable and stable enough, we'll consider it to replace the service at https://framadate.org
|
||||||
|
I'm putting the project in maintenance mode for now, meaning we only commit to release security fixes in the foreseeable future.
|
||||||
|
I hope you can understand our position.
|
||||||
|
Thomas, for Framasoft.
|
111
docs/user-guide/index.md
Normal file
111
docs/user-guide/index.md
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
# Guide utilisateur
|
||||||
|
## Principe
|
||||||
|
Framadate permet de créer et répondre à des sondages demandant des disponibilité dans le temps à plusieurs personnes afin de détermnier un consensus pour organiser des rendez-vous.
|
||||||
|
Il faut donc qu'une personne crée un sondage et publie un lien aux personnes qu'elle souhaite réunir.
|
||||||
|
|
||||||
|
## Glossaire
|
||||||
|
|
||||||
|
| Terme | Signification |
|
||||||
|
| :--- | :--- |
|
||||||
|
| Créateur | Personne ayant créé le sondage |
|
||||||
|
| Participant | Personne invitée à participer ou ayant participé |
|
||||||
|
| Archivage | Empêcher votes et commentaires mais conserver les résultats |
|
||||||
|
| _Slug_ | Partie le l'URL identifiant un sondage de manière unique |
|
||||||
|
|
||||||
|
|
||||||
|
## Fonctionnalités actuellement dans framadate legacy et à conserver
|
||||||
|
|
||||||
|
### Généralités
|
||||||
|
|
||||||
|
Il existe deux types de sondage. Le type « dates » est adapté à la proposition de dates (voir [§plages horaires](#plages-horaires)) et le type « texte », plus généraliste, ne contient que du texte. Ce choix est l'un des premiers choix effectués lors de la création d'un nouveau sondage.
|
||||||
|
|
||||||
|
Deux types d'acteurs sont distingués : la personne ayant créé le sondage et les personnes qui répondent au sondage. Ces deux types d'acteurs n'ont pas les mêmes droits sur le sondage : la personne ayant créé le sondage est la seule ayant des droits d'administration sur celui-ci, en plus des droits des participants. En particulier, les droits d'administration permettent d'ajuster les droits des participants.
|
||||||
|
|
||||||
|
|
||||||
|
### Création d'un sondage
|
||||||
|
|
||||||
|
Il est nécessaire de fournir un email lors de la création du sondage. Cela permet aux créateurs de sondages de pouvoir obtenir via email la liste des sondages qu'ils ont créés.
|
||||||
|
|
||||||
|
Il est possible de choisir le _slug_ dans l'URL du sondage, à condition que ce _slug_ soit disponible.
|
||||||
|
|
||||||
|
Le sondage reste modifiable après sa création.
|
||||||
|
|
||||||
|
|
||||||
|
### Plages horaires
|
||||||
|
|
||||||
|
Les sondages de type « dates » permettent de proposer des jours et des plages horaires pour chaque journée.
|
||||||
|
|
||||||
|
Pour faciliter la saisie des dates proposées, il est demandé si les plages horaires sont les mêmes chaque jour ou si elles sont différentes selon les jours. Dans le premier cas, les plages horaires sont demandées uniquement pour le premier jour et sont automatiquement reproduites sur les autres jours.
|
||||||
|
|
||||||
|
Toujours pour faciliter la saisie des propositions, il est possible d'ajouter plusieurs jours consécutifs en sélectionnant le premier et le dernier jour plutôt qu'en sélectionnant chaque jour un à un.
|
||||||
|
|
||||||
|
|
||||||
|
## Participation à un sondage
|
||||||
|
|
||||||
|
### Votes
|
||||||
|
|
||||||
|
Les participants n'ont pas besoin de créer un compte ou de fournir leur email pour participer à un sondage.
|
||||||
|
|
||||||
|
Le créateur du sondage peut protéger le sondage par un mot de passe. Sans ce mot de passe, il est impossible de voir le sondage, donc impossible d'y voter. Attention cependant, le sondage est stocké en clair dans la base de données et ne bénéficie donc d'aucun chiffrement. *# Le mot de passe, lui, est-il chiffré ?*
|
||||||
|
|
||||||
|
Le créateur du sondage choisit de permettre ou non les modifications des votes sur le sondage. Il a le choix entre les trois formules suivantes :
|
||||||
|
|
||||||
|
* ne pas permettre de modifier de réponse ;
|
||||||
|
* permettre de modifier uniquement sa propre réponse a un sondage (modalités d'identification encore non déterminées) ;
|
||||||
|
* permettre de modifier toute réponse à un sondage (y compris celles des autres).
|
||||||
|
|
||||||
|
|
||||||
|
### Commentaires
|
||||||
|
|
||||||
|
Les participants au sondage ont la possibilité de créer des commentaires sur le sondage. Seule la personne ayant les droits d'administration sur le sondage peut modifier les commentaires.
|
||||||
|
|
||||||
|
|
||||||
|
## Résultats
|
||||||
|
|
||||||
|
Selon la configuration du sondage, les résultats peuvent n'être accessibles qu'à la personne ayant un accès d'administration ou bien être publics. Les personnes pouvant accéder aux résultats du sondage peuvent exporter ces résultats au format CSV.
|
||||||
|
|
||||||
|
|
||||||
|
## Emails
|
||||||
|
|
||||||
|
Lorsqu'une personne crée un sondage, un email reprenant les informations du sondage ainsi que les URL uniques servant à le modifier (lien d'administration) et à y participer (lien à transmettre aux participants) lui est envoyé. De plus, elle peut choisir de recevoir des emails lors d'un nouveau vote ou commentaire sur le sondage.
|
||||||
|
|
||||||
|
Une personne ayant créé au moins un sondage peut demander à recevoir par email la liste des sondages qu'elle a créés en utilisant cette adresse email.
|
||||||
|
|
||||||
|
|
||||||
|
## Stockage et export de données
|
||||||
|
|
||||||
|
Les données sont stockées en clair sur le serveur. L'archivage (resp. suppression) automatique des sondages est effectué via cronjob 90 (resp. 120) jours après sa création. Il est possible pour l'administrateur d'un sondage de modifier la durée avant archivage et la suppression automatique suit toujours de 30 jours la date d'archivage.
|
||||||
|
|
||||||
|
L'export d'un sondage et des résultats d'un sondage est possible au format CSV ainsi que JSON.
|
||||||
|
|
||||||
|
|
||||||
|
# Nouveautés dans Framadate Funky
|
||||||
|
Plus de détails dans la section [Historique](../historique.md) pour connaître le cheminement des versions précédentes.
|
||||||
|
Les idées et rapports de bugs sont disponibles dans [le tableau des Issues](https://framagit.org/framasoft/framadate/funky-framadate-front/-/boards) sur la forge logicielle.
|
||||||
|
|
||||||
|
## principales
|
||||||
|
|
||||||
|
* Accessibilité renforcée.
|
||||||
|
* Traduction dynamique de toutes les phrases en choisissant la langue dans le menu.
|
||||||
|
* Adapté aussi bien sur mobile que grands écrans à haute ou faible densité de pixels.
|
||||||
|
* Anti-spam de commentaires.
|
||||||
|
* Anti-spam de vote.
|
||||||
|
* Tests unitaires et end-to-end.
|
||||||
|
* Couverture de test.
|
||||||
|
|
||||||
|
|
||||||
|
## Nouveautés secondaires
|
||||||
|
|
||||||
|
* Choix de réponses possibles. Proposer de ne répondre que « oui » ou rien, ou aller dans la nuance en proposant « oui », « peut-être », « non », « ? ». *# Redondance ou le choix de réponses possibles de la première phrase concerne un autre choix ?*
|
||||||
|
* Insertion d'images dans le sondage de type texte, avec des URL uniquement. Une seule image par title possible ou rien.
|
||||||
|
* Thème sombre.
|
||||||
|
* Duplication de sondage à partir d'un autre.
|
||||||
|
* Boutons pour copier dans le presse-papier les liens publics et privés / admin des sondages.
|
||||||
|
* Limiter le nombre de participants maximum
|
||||||
|
|
||||||
|
|
||||||
|
# Idées pour de futures améliorations (pertinence à vérifier)
|
||||||
|
|
||||||
|
* Gagner en vie privée en chiffrant certaines informations ? Stockage zéro knowledge avec un chiffrement robuste à courbe elliptique.
|
||||||
|
* À réfléchir : permettre à Framadate de faire entrer à des gens plusieurs plages de temps de disponibilité et le service déduit quelles sont les plages de temps favorables (calcul d'intersection sur des lignes discontinues). Cela pourrait être avec divers niveaux de détail. Comme https://omnipointment.com/ (qui est un logiciel privateur)
|
||||||
|
* SSO du fédiverse ?
|
69
mkdocs.yml
Normal file
69
mkdocs.yml
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
site_name: Funky Framadate Front end
|
||||||
|
site_url: https://framagit.org/framasoft/framadate/funky-framadate-front
|
||||||
|
repo_name: Framagit
|
||||||
|
site_description:
|
||||||
|
docs_dir: docs
|
||||||
|
#docs/
|
||||||
|
# index.md
|
||||||
|
nav:
|
||||||
|
- Accueil:
|
||||||
|
- index.en.md
|
||||||
|
- index.fr.md
|
||||||
|
- en cours: TODO.md
|
||||||
|
- Guide utilisateur:
|
||||||
|
- user-guide/index.md
|
||||||
|
- LICENCE.md
|
||||||
|
- Guide administrateur:
|
||||||
|
- Changelog: changelog.md
|
||||||
|
- Guide développeur:
|
||||||
|
- Démarrer: GETTING_STARTED.md
|
||||||
|
- Personnaliser: customisation.md
|
||||||
|
- Accessibilité: cadrage/accessibility.md
|
||||||
|
- Architecture: cadrage/architecture.md
|
||||||
|
- Contribuer: dev-guide/CONTRIBUTE.md
|
||||||
|
- Angular: angular.md
|
||||||
|
- Traduction: cadrage/i18n.md
|
||||||
|
- Historique:
|
||||||
|
- Historique: history.md
|
||||||
|
- Spécifications: cadrage/specifications-fonctionnelles.md
|
||||||
|
- Réunions:
|
||||||
|
- Modèle vierge: reunions/0_blank_notes.md
|
||||||
|
- 2020_08_09: reunions/2020_08_09.md
|
||||||
|
- 2019_08_09: reunions/2019_08_09.md
|
||||||
|
|
||||||
|
|
||||||
|
plugins:
|
||||||
|
- search
|
||||||
|
- i18n:
|
||||||
|
languages:
|
||||||
|
fr: "Français"
|
||||||
|
en: "English"
|
||||||
|
default_language: 'fr'
|
||||||
|
no_translation:
|
||||||
|
en: "This page isn't translated to English."
|
||||||
|
fr: "Cette page n'est pas traduite en Français."
|
||||||
|
translate_nav:
|
||||||
|
en:
|
||||||
|
section title: "Section"
|
||||||
|
subsection: "Subsection"
|
||||||
|
page title: "Page with title translated"
|
||||||
|
fr:
|
||||||
|
section title: "Section"
|
||||||
|
subsection: "Sous section"
|
||||||
|
page title: "Page avec un titre traduite"
|
||||||
|
|
||||||
|
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
|
||||||
|
alternate:
|
||||||
|
- name: English
|
||||||
|
link: ""
|
||||||
|
lang: en
|
||||||
|
|
||||||
|
- name: Français
|
||||||
|
link: ""
|
||||||
|
lang: fr
|
||||||
|
|
@ -63,7 +63,7 @@ export class PollConfig {
|
|||||||
owner_modifier_token = ''; // key to change a vote stack
|
owner_modifier_token = ''; // key to change a vote stack
|
||||||
canModifyAnswers = true; // bool for the frontend selector
|
canModifyAnswers = true; // bool for the frontend selector
|
||||||
whoCanChangeAnswers = 'everybody'; // everybody, self, nobody (= just admin)
|
whoCanChangeAnswers = 'everybody'; // everybody, self, nobody (= just admin)
|
||||||
dateList: any = otherDefaultDates; // sets of days as strings, config to set identical time for days in a special days poll
|
dateList: any = otherDefaultDates; // sets of dateList as strings, config to set identical time for dateList in a special dateList poll
|
||||||
timeList: DateChoice[] = otherDefaultDates; // ranges of time expressed as strings
|
timeList: DateChoice[] = otherDefaultDates; // ranges of time expressed as strings
|
||||||
|
|
||||||
answers: PollAnswer[] = defaultAnswers;
|
answers: PollAnswer[] = defaultAnswers;
|
||||||
|
@ -8,7 +8,7 @@ export const mockGraphConfig = {
|
|||||||
visibility: 'link_only',
|
visibility: 'link_only',
|
||||||
// date specific poll
|
// date specific poll
|
||||||
allowSeveralHours: 'true',
|
allowSeveralHours: 'true',
|
||||||
dateLgfgfgfgist: ['jeudi', 'vendredi', 'samedi'], // sets of days as strings
|
dateLgfgfgfgist: ['jeudi', 'vendredi', 'samedi'], // sets of dateList as strings
|
||||||
timeList: ['08:00', '08:30', '09:00'], // ranges of time expressed as strings
|
timeList: ['08:00', '08:30', '09:00'], // ranges of time expressed as strings
|
||||||
answers: [
|
answers: [
|
||||||
{
|
{
|
||||||
|
@ -95,20 +95,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="'false' === config.allowSeveralHours" class="identical-dates">
|
<div *ngIf="'false' === config.allowSeveralHours" class="identical-dates">
|
||||||
<div *ngFor="let time of config.timeList; index as id" class="time-choice">
|
|
||||||
<label for="timeChoices_{{ id }}">
|
|
||||||
<i class="fa fa-clock-o" aria-hidden="true"></i>
|
|
||||||
</label>
|
|
||||||
<input
|
|
||||||
[(ngModel)]="time.literal"
|
|
||||||
name="timeChoices_{{ id }}"
|
|
||||||
type="text"
|
|
||||||
id="timeChoices_{{ id }}"
|
|
||||||
/>
|
|
||||||
<button (click)="time.timeList.splice(id, 1)" class="btn btn-warning">
|
|
||||||
<i class="fa fa-times" aria-hidden="true"></i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<hr />
|
<hr />
|
||||||
<span class="count-dates title">
|
<span class="count-dates title">
|
||||||
|
@ -30,7 +30,7 @@ export class DatesComponent extends BaseComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
countDays() {
|
countDays() {
|
||||||
// compute the number of days in the date interval
|
// compute the number of dateList in the date interval
|
||||||
if (this.endDateInterval && this.startDateInterval) {
|
if (this.endDateInterval && this.startDateInterval) {
|
||||||
this.intervalDays = this.dateUtilities.dayDiff(this.endDateInterval, this.startDateInterval).toFixed(0);
|
this.intervalDays = this.dateUtilities.dayDiff(this.endDateInterval, this.startDateInterval).toFixed(0);
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ export class ConfigService extends PollConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* add some days to a date, to compute intervals
|
* add some dateList to a date, to compute intervals
|
||||||
* @param days
|
* @param days
|
||||||
* @param date
|
* @param date
|
||||||
*/
|
*/
|
||||||
|
2
package-lock.json
generated
2
package-lock.json
generated
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "framadate-funky-frontend",
|
"name": "framadate-funky-frontend",
|
||||||
"version": "1.0.0",
|
"version": "0.6.0",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
245
package.json
245
package.json
@ -1,123 +1,126 @@
|
|||||||
{
|
{
|
||||||
"name": "framadate-funky-frontend",
|
"name": "framadate-funky-frontend",
|
||||||
"version": "1.0.0",
|
"version": "0.6.0",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"ng": "ng",
|
"ng": "ng",
|
||||||
"start": "ng serve",
|
"start": "ng serve",
|
||||||
"build:prod": "ng build --prod",
|
"build:prod": "ng build --prod",
|
||||||
"build:prod:stats": "ng build --prod --stats-json",
|
"build:prod:stats": "ng build --prod --stats-json",
|
||||||
"build:prod:gitlabpage": "ng build --prod --baseHref=/framadate/funky-framadate-front/",
|
"build:prod:gitlabpage": "ng build --prod --baseHref=/framadate/funky-framadate-front/",
|
||||||
"build:prod:demobliss": "ng build --prod --baseHref=https://framadate-api.cipherbliss.com --stats-json ",
|
"build:prod:demobliss": "ng build --prod --baseHref=https://framadate-api.cipherbliss.com --stats-json ",
|
||||||
"test": "jest",
|
"test": "jest",
|
||||||
"test:watch": "jest --watch",
|
"test:watch": "jest --watch",
|
||||||
"test:ci": "jest --ci",
|
"test:ci": "jest --ci",
|
||||||
"lint": "prettier --write \"src/**/*.{js,jsx,ts,tsx,md,html,css,scss}\"",
|
"lint": "prettier --write \"src/**/*.{js,jsx,ts,tsx,md,html,css,scss}\"",
|
||||||
"e2e": "ng e2e",
|
"e2e": "ng e2e",
|
||||||
"format:check": "prettier --list-different \"src/{app,environments,assets}/**/*{.ts,.js,.json,.css,.scss}\"",
|
"release:major": "changelog -M && git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md' && npm version major && git push origin && git push origin --tags",
|
||||||
"format:all": "prettier --write \"src/**/*.{js,jsx,ts,tsx,md,html,css,scss}\"",
|
"release:minor": "changelog -m && git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md' && npm version minor && git push origin && git push origin --tags",
|
||||||
"trans": "ng xi18n --output-path=src/locale --i18n-locale=fr",
|
"release:patch": "changelog -p && git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md' && npm version patch && git push origin && git push origin --tags",
|
||||||
"compodoc": "compodoc -p tsconfig.app.json",
|
"format:check": "prettier --list-different \"src/{app,environments,assets}/**/*{.ts,.js,.json,.css,.scss}\"",
|
||||||
"mock:server": "json-server --port 8000 --watch ./mocks/db.json --routes ./mocks/routes.json",
|
"format:all": "prettier --write \"src/**/*.{js,jsx,ts,tsx,md,html,css,scss}\"",
|
||||||
"start:proxy": "ng serve --proxy-config proxy.conf.json",
|
"trans": "ng xi18n --output-path=src/locale --i18n-locale=fr",
|
||||||
"start:proxymock": "concurrently --kill-others \"yarn mock:server\" \"yarn start:proxy\"",
|
"compodoc": "compodoc -p tsconfig.app.json",
|
||||||
"i18n:init": "ngx-translate-extract --input ./src --output ./src/assets/i18n/template.json --key-as-default-value --replace --format json",
|
"mock:server": "json-server --port 8000 --watch ./mocks/db.json --routes ./mocks/routes.json",
|
||||||
"i18n:extract": "ngx-translate-extract --input ./src --output ./src/assets/i18n/{en,da,de,fi,nb,nl,sv}.json --clean --format json"
|
"start:proxy": "ng serve --proxy-config proxy.conf.json",
|
||||||
},
|
"start:proxymock": "concurrently --kill-others \"yarn mock:server\" \"yarn start:proxy\"",
|
||||||
"private": false,
|
"i18n:init": "ngx-translate-extract --input ./src --output ./src/assets/i18n/template.json --key-as-default-value --replace --format json",
|
||||||
"dependencies": {
|
"i18n:extract": "ngx-translate-extract --input ./src --output ./src/assets/i18n/{en,da,de,fi,nb,nl,sv}.json --clean --format json"
|
||||||
"@angular/animations": "^9.1.1",
|
},
|
||||||
"@angular/cdk": "^9.2.2",
|
"private": false,
|
||||||
"@angular/common": "^9.0.7",
|
"dependencies": {
|
||||||
"@angular/compiler": "^9.0.7",
|
"@angular/animations": "^9.1.1",
|
||||||
"@angular/core": "^9.0.7",
|
"@angular/cdk": "^9.2.2",
|
||||||
"@angular/forms": "^9.0.7",
|
"@angular/common": "^9.0.7",
|
||||||
"@angular/localize": "^9.1.1",
|
"@angular/compiler": "^9.0.7",
|
||||||
"@angular/material": "^9.2.4",
|
"@angular/core": "^9.0.7",
|
||||||
"@angular/platform-browser": "^9.0.7",
|
"@angular/forms": "^9.0.7",
|
||||||
"@angular/platform-browser-dynamic": "^9.0.7",
|
"@angular/localize": "^9.1.1",
|
||||||
"@angular/router": "^9.0.7",
|
"@angular/material": "^9.2.4",
|
||||||
"@biesbjerg/ngx-translate-extract": "^7.0.3",
|
"@angular/platform-browser": "^9.0.7",
|
||||||
"@biesbjerg/ngx-translate-po-http-loader": "^3.1.0",
|
"@angular/platform-browser-dynamic": "^9.0.7",
|
||||||
"@fullcalendar/core": "^4.4.0",
|
"@angular/router": "^9.0.7",
|
||||||
"@ngx-translate/core": "^12.1.2",
|
"@biesbjerg/ngx-translate-extract": "^7.0.3",
|
||||||
"@ngx-translate/http-loader": "^5.0.0",
|
"@biesbjerg/ngx-translate-po-http-loader": "^3.1.0",
|
||||||
"angular-date-value-accessor": "^1.0.2",
|
"@fullcalendar/core": "^4.4.0",
|
||||||
"axios": "^0.19.2",
|
"@ngx-translate/core": "^12.1.2",
|
||||||
"bulma": "^0.9.0",
|
"@ngx-translate/http-loader": "^5.0.0",
|
||||||
"bulma-switch": "^2.0.0",
|
"angular-date-value-accessor": "^1.0.2",
|
||||||
"chart.js": "^2.9.3",
|
"axios": "^0.19.2",
|
||||||
"crypto": "^1.0.1",
|
"bulma": "^0.9.0",
|
||||||
"fork-awesome": "^1.1.7",
|
"bulma-switch": "^2.0.0",
|
||||||
"ng2-charts": "^2.3.0",
|
"chart.js": "^2.9.3",
|
||||||
"ngx-clipboard": "^13.0.0",
|
"crypto": "^1.0.1",
|
||||||
"ngx-markdown": "^9.0.0",
|
"fork-awesome": "^1.1.7",
|
||||||
"ngx-webstorage": "^5.0.0",
|
"ng2-charts": "^2.3.0",
|
||||||
"node-forge": "^0.10.0",
|
"ngx-clipboard": "^13.0.0",
|
||||||
"primeng": "^9.0.6",
|
"ngx-markdown": "^9.0.0",
|
||||||
"quill": "^1.3.7",
|
"ngx-webstorage": "^5.0.0",
|
||||||
"rxjs": "^6.5.5",
|
"node-forge": "^0.10.0",
|
||||||
"rxjs-compat": "^6.5.5",
|
"primeng": "^9.0.6",
|
||||||
"short-unique-id": "^3.0.3",
|
"quill": "^1.3.7",
|
||||||
"stream": "^0.0.2",
|
"rxjs": "^6.5.5",
|
||||||
"tslib": "<2.0.0",
|
"rxjs-compat": "^6.5.5",
|
||||||
"zone.js": "^0.10.3"
|
"short-unique-id": "^3.0.3",
|
||||||
},
|
"stream": "^0.0.2",
|
||||||
"devDependencies": {
|
"tslib": "<2.0.0",
|
||||||
"@angular-builders/jest": "^9.0.1",
|
"zone.js": "^0.10.3"
|
||||||
"@angular-devkit/build-angular": "^0.901.2",
|
},
|
||||||
"@angular/cli": "^9.1.2",
|
"devDependencies": {
|
||||||
"@angular/compiler-cli": "^9.1.1",
|
"@angular-builders/jest": "^9.0.1",
|
||||||
"@angular/language-service": "^9.0.7",
|
"@angular-devkit/build-angular": "^0.901.2",
|
||||||
"@babel/core": "^7.9.0",
|
"@angular/cli": "^9.1.2",
|
||||||
"@babel/preset-env": "^7.9.5",
|
"@angular/compiler-cli": "^9.1.1",
|
||||||
"@babel/preset-typescript": "^7.9.0",
|
"@angular/language-service": "^9.0.7",
|
||||||
"@compodoc/compodoc": "^1.1.11",
|
"@babel/core": "^7.9.0",
|
||||||
"@types/jest": "^26.0.0",
|
"@babel/preset-env": "^7.9.5",
|
||||||
"@types/node": "^14.0.1",
|
"@babel/preset-typescript": "^7.9.0",
|
||||||
"@typescript-eslint/eslint-plugin": "^3.0.0",
|
"@compodoc/compodoc": "^1.1.11",
|
||||||
"@typescript-eslint/parser": "^3.0.0",
|
"@types/jest": "^26.0.0",
|
||||||
"babel-jest": "^26.0.0",
|
"@types/node": "^14.0.1",
|
||||||
"concurrently": "^5.2.0",
|
"@typescript-eslint/eslint-plugin": "^3.0.0",
|
||||||
"eslint": "^7.0.0",
|
"@typescript-eslint/parser": "^3.0.0",
|
||||||
"eslint-config-prettier": "^6.11.0",
|
"babel-jest": "^26.0.0",
|
||||||
"eslint-plugin-prettier": "^3.1.3",
|
"concurrently": "^5.2.0",
|
||||||
"husky": "^4.2.5",
|
"eslint": "^7.0.0",
|
||||||
"jest": "^26.0.0",
|
"eslint-config-prettier": "^6.11.0",
|
||||||
"jest-environment-jsdom-sixteen": "^1.0.3",
|
"eslint-plugin-prettier": "^3.1.3",
|
||||||
"jest-preset-angular": "^8.1.3",
|
"husky": "^4.2.5",
|
||||||
"json-server": "^0.16.1",
|
"jest": "^26.0.0",
|
||||||
"lint-staged": "^10.1.7",
|
"jest-environment-jsdom-sixteen": "^1.0.3",
|
||||||
"prettier": "^2.0.5",
|
"jest-preset-angular": "^8.1.3",
|
||||||
"protractor": "~7.0.0",
|
"json-server": "^0.16.1",
|
||||||
"ts-jest": "^26.0.0",
|
"lint-staged": "^10.1.7",
|
||||||
"ts-mockito": "^2.5.0",
|
"prettier": "^2.0.5",
|
||||||
"ts-node": "^8.10.1",
|
"protractor": "~7.0.0",
|
||||||
"typescript": "<3.9.0"
|
"ts-jest": "^26.0.0",
|
||||||
},
|
"ts-mockito": "^2.5.0",
|
||||||
"husky": {
|
"ts-node": "^8.10.1",
|
||||||
"hooks": {
|
"typescript": "<3.9.0"
|
||||||
"pre-commit": "lint-staged"
|
},
|
||||||
}
|
"husky": {
|
||||||
},
|
"hooks": {
|
||||||
"lint-staged": {
|
"pre-commit": "lint-staged"
|
||||||
"src/**/*.{js,jsx,ts,tsx,md,html,css,scss}": [
|
}
|
||||||
"prettier --write",
|
},
|
||||||
"git add"
|
"lint-staged": {
|
||||||
],
|
"src/**/*.{js,jsx,ts,tsx,md,html,css,scss}": [
|
||||||
"*.js": [
|
"prettier --write",
|
||||||
"prettier --write"
|
"git add"
|
||||||
]
|
],
|
||||||
},
|
"*.js": [
|
||||||
"jest": {
|
"prettier --write"
|
||||||
"preset": "jest-preset-angular",
|
]
|
||||||
"setupFilesAfterEnv": [
|
},
|
||||||
"<rootDir>/src/jest.setup.ts"
|
"jest": {
|
||||||
],
|
"preset": "jest-preset-angular",
|
||||||
"testEnvironment": "jest-environment-jsdom-sixteen",
|
"setupFilesAfterEnv": [
|
||||||
"transform": {
|
"<rootDir>/src/jest.setup.ts"
|
||||||
"^.+\\.(ts|html)$": "ts-jest",
|
],
|
||||||
"^.+\\.jsx?$": "babel-jest"
|
"testEnvironment": "jest-environment-jsdom-sixteen",
|
||||||
}
|
"transform": {
|
||||||
}
|
"^.+\\.(ts|html)$": "ts-jest",
|
||||||
|
"^.+\\.jsx?$": "babel-jest"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ export class Poll {
|
|||||||
public modification_policy = 'everybody';
|
public modification_policy = 'everybody';
|
||||||
|
|
||||||
public dateChoices: DateChoice[] = [];
|
public dateChoices: DateChoice[] = [];
|
||||||
// sets of days as strings, config to set identical time for days in a special days poll
|
// sets of dateList as strings, config to set identical time for dateList in a special dateList poll
|
||||||
public timeSlices: TimeSlices[] = []; // ranges of time expressed as strings
|
public timeSlices: TimeSlices[] = []; // ranges of time expressed as strings
|
||||||
|
|
||||||
constructor(public owner: Owner = new Owner(), public title = 'mon titre', public custom_url: string = '') {}
|
constructor(public owner: Owner = new Owner(), public title = 'mon titre', public custom_url: string = '') {}
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
|
import { DateChoice } from '../../../../mocks/old-stuff/config/defaultConfigs';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root',
|
providedIn: 'root',
|
||||||
})
|
})
|
||||||
export class DateUtilitiesService {
|
export class DateUtilitiesService {
|
||||||
/**
|
/**
|
||||||
* add some days to a date, to compute intervals
|
* add some dateList to a date, to compute intervals
|
||||||
* @param days
|
* @param days
|
||||||
* @param date
|
* @param date
|
||||||
*/
|
*/
|
||||||
@ -27,7 +28,7 @@ export class DateUtilitiesService {
|
|||||||
const dates = [];
|
const dates = [];
|
||||||
while (+d1 < +d2) {
|
while (+d1 < +d2) {
|
||||||
dates.push({
|
dates.push({
|
||||||
literal: this.formateDate(d1),
|
literal: this.formateDateToInputStringNg(d1),
|
||||||
date_object: d1,
|
date_object: d1,
|
||||||
});
|
});
|
||||||
d1.setDate(d1.getDate() + interval);
|
d1.setDate(d1.getDate() + interval);
|
||||||
@ -36,7 +37,7 @@ export class DateUtilitiesService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get the number of days between two dates
|
* get the number of dateList between two dates
|
||||||
* @param d1
|
* @param d1
|
||||||
* @param d2
|
* @param d2
|
||||||
*/
|
*/
|
||||||
@ -50,7 +51,7 @@ export class DateUtilitiesService {
|
|||||||
* YYYY-MM-DD
|
* YYYY-MM-DD
|
||||||
* @param date
|
* @param date
|
||||||
*/
|
*/
|
||||||
formateDate(date) {
|
formateDateToInputStringNg(date: Date): string {
|
||||||
return [
|
return [
|
||||||
date.getFullYear(),
|
date.getFullYear(),
|
||||||
this.getDoubleDigits(date.getMonth() + 1),
|
this.getDoubleDigits(date.getMonth() + 1),
|
||||||
@ -58,24 +59,69 @@ export class DateUtilitiesService {
|
|||||||
].join('-');
|
].join('-');
|
||||||
}
|
}
|
||||||
|
|
||||||
parseInputDateToDateObject(inputDateString: string) {
|
/**
|
||||||
const boom = inputDateString.split('-');
|
* transform a date object to a short date string
|
||||||
|
* @param inputDate
|
||||||
|
*/
|
||||||
|
parseInputDateToDateObject(inputDate: Date): Date {
|
||||||
|
const boom = inputDate.toISOString().substring(0, 10).split('-');
|
||||||
|
|
||||||
const converted = new Date(boom['0'], boom['1'] - 1, boom['2']);
|
const converted = new Date(boom['0'], boom['1'] - 1, boom['2']);
|
||||||
console.log('converted', converted);
|
console.log('converted', converted);
|
||||||
return converted;
|
return converted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get double in string
|
||||||
|
* @param str
|
||||||
|
*/
|
||||||
getDoubleDigits(str) {
|
getDoubleDigits(str) {
|
||||||
return ('00' + str).slice(-2);
|
return ('00' + str).slice(-2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* compute the number of dateList in the date interval
|
||||||
|
* @param startDateInterval
|
||||||
|
* @param endDateInterval
|
||||||
|
*/
|
||||||
countDays(startDateInterval: Date, endDateInterval: Date): number {
|
countDays(startDateInterval: Date, endDateInterval: Date): number {
|
||||||
// compute the number of days in the date interval
|
|
||||||
|
|
||||||
if (endDateInterval && startDateInterval) {
|
if (endDateInterval && startDateInterval) {
|
||||||
return this.dayDiff(endDateInterval, startDateInterval);
|
return this.dayDiff(endDateInterval, startDateInterval);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fill default dates for today + the next 3 dateList
|
||||||
|
*/
|
||||||
|
makeDefaultDateChoices(): DateChoice[] {
|
||||||
|
const today = new Date();
|
||||||
|
const ladate = this.addDaysToDate(1, today);
|
||||||
|
const ladate2 = this.addDaysToDate(2, today);
|
||||||
|
const ladate3 = this.addDaysToDate(3, today);
|
||||||
|
const ladate4 = this.addDaysToDate(4, today);
|
||||||
|
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
literal: this.formateDateToInputStringNg(ladate),
|
||||||
|
timeList: [],
|
||||||
|
date_object: ladate,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
literal: this.formateDateToInputStringNg(ladate2),
|
||||||
|
timeList: [],
|
||||||
|
date_object: ladate2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
literal: this.formateDateToInputStringNg(ladate3),
|
||||||
|
timeList: [],
|
||||||
|
date_object: ladate3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
literal: this.formateDateToInputStringNg(ladate4),
|
||||||
|
timeList: [],
|
||||||
|
date_object: ladate4,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -212,6 +212,8 @@ export class PollService implements Resolve<Poll> {
|
|||||||
newpoll.password = form.value.password;
|
newpoll.password = form.value.password;
|
||||||
newpoll.kind = form.value.kind;
|
newpoll.kind = form.value.kind;
|
||||||
newpoll.allow_comments = form.value.allowComments;
|
newpoll.allow_comments = form.value.allowComments;
|
||||||
|
// merge choices from storage
|
||||||
|
newpoll.choices = this.storageService.choices;
|
||||||
newpoll.dateChoices = this.storageService.dateList;
|
newpoll.dateChoices = this.storageService.dateList;
|
||||||
newpoll.timeSlices = this.storageService.timeSlices;
|
newpoll.timeSlices = this.storageService.timeSlices;
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ import {
|
|||||||
} from '../../../../mocks/old-stuff/config/defaultConfigs';
|
} from '../../../../mocks/old-stuff/config/defaultConfigs';
|
||||||
import { Poll } from '../models/poll.model';
|
import { Poll } from '../models/poll.model';
|
||||||
import { Owner } from '../models/owner.model';
|
import { Owner } from '../models/owner.model';
|
||||||
|
import { DateUtilitiesService } from './date.utilities.service';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root',
|
providedIn: 'root',
|
||||||
@ -31,7 +32,7 @@ export class StorageService {
|
|||||||
public userPolls: Poll[] = [];
|
public userPolls: Poll[] = [];
|
||||||
|
|
||||||
@LocalStorage()
|
@LocalStorage()
|
||||||
public dateList: DateChoice[] = otherDefaultDates;
|
public dateList: DateChoice[] = [];
|
||||||
|
|
||||||
@LocalStorage()
|
@LocalStorage()
|
||||||
public timeSlices: TimeSlices[];
|
public timeSlices: TimeSlices[];
|
||||||
@ -39,14 +40,20 @@ export class StorageService {
|
|||||||
@LocalStorage()
|
@LocalStorage()
|
||||||
public vote_stack: Stack = new Stack();
|
public vote_stack: Stack = new Stack();
|
||||||
|
|
||||||
constructor() {
|
@LocalStorage()
|
||||||
|
public choices: Choice[];
|
||||||
|
|
||||||
|
constructor(public dateUtilities: DateUtilitiesService) {
|
||||||
if (environment.autofill) {
|
if (environment.autofill) {
|
||||||
this.userPolls.push(new Poll(new Owner(), 'Démo: Anniversaire de tonton Patrick', 'aujourdhui-ou-demain'));
|
this.userPolls.push(new Poll(new Owner(), 'Démo: Anniversaire de tonton Patrick', 'aujourdhui-ou-demain'));
|
||||||
this.userPolls.push(new Poll(new Owner(), 'Démo: Atelier cuisine du quartier', 'aujourdhui-ou-demain'));
|
this.userPolls.push(new Poll(new Owner(), 'Démo: Atelier cuisine du quartier', 'aujourdhui-ou-demain'));
|
||||||
this.userPolls.push(
|
this.userPolls.push(
|
||||||
new Poll(new Owner(), 'Démo: Réunion du département des chatons', 'aujourdhui-ou-demain')
|
new Poll(new Owner(), 'Démo: Réunion du département des chatons', 'aujourdhui-ou-demain')
|
||||||
);
|
);
|
||||||
// this.timeSlices = basicSlicesOfDay;
|
}
|
||||||
|
|
||||||
|
if (!this.dateList.length) {
|
||||||
|
this.dateList = this.dateUtilities.makeDefaultDateChoices();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,9 +16,13 @@ import { TextSelectComponent } from './form/text-select/text-select.component';
|
|||||||
import { KindSelectComponent } from './form/kind-select/kind-select.component';
|
import { KindSelectComponent } from './form/kind-select/kind-select.component';
|
||||||
import { BaseConfigComponent } from './form/base-config/base-config.component';
|
import { BaseConfigComponent } from './form/base-config/base-config.component';
|
||||||
import { AdvancedConfigComponent } from './form/advanced-config/advanced-config.component';
|
import { AdvancedConfigComponent } from './form/advanced-config/advanced-config.component';
|
||||||
import { CalendarModule } from 'primeng';
|
import { CalendarModule, DialogModule } from 'primeng';
|
||||||
import { DragDropModule } from '@angular/cdk/drag-drop';
|
import { DragDropModule } from '@angular/cdk/drag-drop';
|
||||||
import { AppModule } from '../../app.module';
|
import { AppModule } from '../../app.module';
|
||||||
|
import { IntervalComponent } from './form/date/interval/interval.component';
|
||||||
|
import { DayListComponent } from './form/date/list/day/day-list.component';
|
||||||
|
import { PickerComponent } from './form/date/picker/picker.component';
|
||||||
|
import { TimeListComponent } from './form/date/list/time/time-list.component';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
@ -32,6 +36,10 @@ import { AppModule } from '../../app.module';
|
|||||||
KindSelectComponent,
|
KindSelectComponent,
|
||||||
BaseConfigComponent,
|
BaseConfigComponent,
|
||||||
AdvancedConfigComponent,
|
AdvancedConfigComponent,
|
||||||
|
IntervalComponent,
|
||||||
|
DayListComponent,
|
||||||
|
PickerComponent,
|
||||||
|
TimeListComponent,
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
CalendarModule,
|
CalendarModule,
|
||||||
@ -43,6 +51,7 @@ import { AppModule } from '../../app.module';
|
|||||||
TranslateModule.forChild({ extend: true }),
|
TranslateModule.forChild({ extend: true }),
|
||||||
DateValueAccessorModule,
|
DateValueAccessorModule,
|
||||||
DragDropModule,
|
DragDropModule,
|
||||||
|
DialogModule,
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class AdministrationModule {}
|
export class AdministrationModule {}
|
||||||
|
@ -6,65 +6,29 @@
|
|||||||
{{ 'dates.add' | translate }}
|
{{ 'dates.add' | translate }}
|
||||||
|
|
||||||
<!-- interval-->
|
<!-- interval-->
|
||||||
<button
|
<!-- <app-date-interval></app-date-interval>-->
|
||||||
(click)="showDateInterval = !showDateInterval"
|
|
||||||
[ngClass]="{ active: showDateInterval }"
|
|
||||||
class="btn btn--primary"
|
|
||||||
id="toggle_interval_button"
|
|
||||||
>
|
|
||||||
<i class="fa fa-clock-o" aria-hidden="true"></i>
|
|
||||||
<span>
|
|
||||||
{{ 'dates.add_interval' | translate }}
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
<fieldset *ngIf="showDateInterval" class="date-interval form-row is-boxed">
|
|
||||||
<h2>{{ 'dates.add_interval' | translate }}</h2>
|
|
||||||
<div class="columns">
|
|
||||||
<div class="column">
|
|
||||||
{{ 'dates.interval_propose' | translate }}
|
|
||||||
</div>
|
|
||||||
<div class="column">
|
|
||||||
<label for="start_interval" class="hidden">start</label>
|
|
||||||
<input id="start_interval" (change)="countDays()" formControlName="startDateInterval" type="date" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="columns">
|
|
||||||
<div class="column">
|
|
||||||
{{ 'dates.interval_span' | translate }}
|
|
||||||
</div>
|
|
||||||
<div class="column">
|
|
||||||
<label for="end_interval" class="hidden">end</label>
|
|
||||||
<input id="end_interval" formControlName="endDateInterval" type="date" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<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>
|
|
||||||
</fieldset>
|
|
||||||
</form>
|
</form>
|
||||||
<div class="dates-list">
|
<div class="dates-list">
|
||||||
<button
|
<!-- différentes horaires-->
|
||||||
class="btn"
|
<div class="different-hours" *ngIf="displaySeveralHoursChoice">
|
||||||
[class.is-primary]="form.value.hasSeveralHours"
|
<button
|
||||||
(click)="form.patchValue({ hasSeveralHours: !form.value.hasSeveralHours })"
|
class="btn"
|
||||||
>
|
[class.is-primary]="form.value.hasSeveralHours"
|
||||||
<i class="fa fa-check-square-o" *ngIf="form.value.hasSeveralHours"></i>
|
(click)="form.patchValue({ hasSeveralHours: !form.value.hasSeveralHours })"
|
||||||
<i class="fa fa-square-o" *ngIf="!form.value.hasSeveralHours"></i>
|
>
|
||||||
<span> horaires avancées</span>
|
<i class="fa fa-check-square-o" *ngIf="form.value.hasSeveralHours"></i>
|
||||||
<i class="fa fa-clock-o"></i>
|
<i class="fa fa-square-o" *ngIf="!form.value.hasSeveralHours"></i>
|
||||||
</button>
|
<span> horaires avancées</span>
|
||||||
<div class="is-info notification">
|
<i class="fa fa-clock-o"></i>
|
||||||
<span *ngIf="form.value.hasSeveralHours">
|
</button>
|
||||||
Chaque jour aura ses plages de temps personnalisées
|
<div class="is-info notification">
|
||||||
</span>
|
<span *ngIf="form.value.hasSeveralHours">
|
||||||
<span *ngIf="!form.value.hasSeveralHours">
|
Chaque jour aura ses plages de temps personnalisées
|
||||||
Tous les jours auront les mêmes plages de temps
|
</span>
|
||||||
</span>
|
<span *ngIf="!form.value.hasSeveralHours">
|
||||||
</div>
|
Tous les jours auront les mêmes plages de temps
|
||||||
<fieldset class="range-container is-boxed">
|
</span>
|
||||||
|
</div>
|
||||||
<div class="actions columns">
|
<div class="actions columns">
|
||||||
<div class="column"></div>
|
<div class="column"></div>
|
||||||
<div class="column has-text-right">
|
<div class="column has-text-right">
|
||||||
@ -102,150 +66,37 @@
|
|||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<fieldset class="range-container is-boxed">
|
||||||
|
<div class="range-time" *ngIf="!form.value.hasSeveralHours">
|
||||||
<div class="range-time" *ngIf="!form.value.hasSeveralHours">
|
<h2>
|
||||||
<h2>
|
<span class="count-dates-txt">
|
||||||
<span class="count-dates-txt">
|
{{ 'dates.count_time' | translate }}
|
||||||
{{ 'dates.count_time' | translate }}
|
(identique pour chaque jour)
|
||||||
(identique pour chaque jour)
|
</span>
|
||||||
</span>
|
</h2>
|
||||||
</h2>
|
<div class="title">
|
||||||
<div class="title">
|
<span class="count-dates">
|
||||||
<span class="count-dates">
|
{{ timeList.length }}
|
||||||
{{ timeList.length }}
|
</span>
|
||||||
</span>
|
<button class="button is-warning" (click)="removeAllTimes()">
|
||||||
<button class="button is-warning" (click)="removeAllTimes()">
|
<i class="fa fa-trash"></i>
|
||||||
<i class="fa fa-trash"></i>
|
</button>
|
||||||
</button>
|
<button class="button is-info" (click)="resetTimes()">
|
||||||
<button class="button is-info" (click)="resetTimes()">
|
<i class="fa fa-refresh"></i>
|
||||||
<i class="fa fa-refresh"></i>
|
</button>
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="identical-dates" cdkDropListGroup>
|
|
||||||
<div
|
|
||||||
class="time-list"
|
|
||||||
cdkDropList
|
|
||||||
[cdkDropListData]="timeList"
|
|
||||||
(cdkDropListDropped)="dropTimeItem($event)"
|
|
||||||
>
|
|
||||||
<div *ngFor="let time of timeList; index as time_id" class="time-choice movable" cdkDrag>
|
|
||||||
<div class="columns">
|
|
||||||
<div class="column">
|
|
||||||
<label class="button pull-left" [for]="'timeChoices_' + time_id">
|
|
||||||
<i class="icon fa fa-arrows-v" aria-hidden="true"></i>
|
|
||||||
</label>
|
|
||||||
<input
|
|
||||||
class="pull-left"
|
|
||||||
[(ngModel)]="time.literal"
|
|
||||||
name="timeChoices_{{ time_id }}"
|
|
||||||
type="text"
|
|
||||||
id="timeChoices_{{ time_id }}"
|
|
||||||
/>
|
|
||||||
<button (click)="timeList.splice(time_id, 1)" class="button is-warning">
|
|
||||||
<i class="fa fa-times" aria-hidden="true"></i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</div>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
<div class="main-box is-boxed">
|
<div class="main-box is-boxed">
|
||||||
<div class="columns">
|
<app-day-list
|
||||||
<div class="column">
|
[form]="form"
|
||||||
<!-- ajouter une date-->
|
[dateList]="dateList"
|
||||||
<button class="btn btn--primary" (click)="addChoice()">
|
[hasSeveralHours]="form.value.hasSeveralHours"
|
||||||
{{ 'dates.add' | translate }}
|
></app-day-list>
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="column">
|
|
||||||
<span class="count-dates title">
|
|
||||||
{{ dateList.length }}
|
|
||||||
</span>
|
|
||||||
<span>
|
|
||||||
{{ 'dates.count_dates' | translate }}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div
|
|
||||||
class="columns days-list"
|
|
||||||
cdkDropList
|
|
||||||
[cdkDropListData]="dateList"
|
|
||||||
(cdkDropListDropped)="dropDayItem($event)"
|
|
||||||
>
|
|
||||||
<div class="column">
|
|
||||||
<!-- TODO lier au formulaire les valeurs des dates-->
|
|
||||||
<h2>Dates</h2>
|
|
||||||
<div *ngFor="let choice of dateList; index as id" class="date-choice" cdkDrag>
|
|
||||||
<input
|
|
||||||
[(ngModel)]="choice.date_object"
|
|
||||||
name="dateChoices_{{ id }}"
|
|
||||||
id="dateChoices_{{ id }}"
|
|
||||||
useValueAsDate
|
|
||||||
type="date"
|
|
||||||
/>
|
|
||||||
<button (click)="dateList.splice(id, 1)" class="btn btn-warning">
|
|
||||||
<i class="fa fa-times" aria-hidden="true"></i>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
(click)="addTimeToDate(choice, id)"
|
|
||||||
*ngIf="form.value.hasSeveralHours"
|
|
||||||
class="btn btn--primary"
|
|
||||||
>
|
|
||||||
{{ 'dates.add_time' | translate }}
|
|
||||||
</button>
|
|
||||||
<div *ngIf="form.value.hasSeveralHours" class="several-times">
|
|
||||||
plage horaire distincte
|
|
||||||
<br />
|
|
||||||
<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>
|
|
||||||
<!-- date picker calendrier-->
|
|
||||||
<!-- <div class="column calendar-column">-->
|
|
||||||
<!-- <button class="btn" (click)="selectionKind = 'range'" [class.is-primary]="selectionKind == 'range'">-->
|
|
||||||
<!-- plage de jours-->
|
|
||||||
<!-- </button>-->
|
|
||||||
|
|
||||||
<!-- <button-->
|
|
||||||
<!-- class="btn"-->
|
|
||||||
<!-- (click)="selectionKind = 'multiple'"-->
|
|
||||||
<!-- [class.is-primary]="selectionKind == 'multiple'"-->
|
|
||||||
<!-- >-->
|
|
||||||
<!-- jours séparés-->
|
|
||||||
<!-- </button>-->
|
|
||||||
<!-- <button class="btn" (click)="setDefaultDatesForInterval()">-->
|
|
||||||
<!-- réinitialiser</button-->
|
|
||||||
<!-- ><button class="btn" (click)="dateCalendarEnum = [today]">-->
|
|
||||||
<!-- vider-->
|
|
||||||
<!-- </button>-->
|
|
||||||
<!-- <div class="text-center">-->
|
|
||||||
<!-- <br />-->
|
|
||||||
<!-- <p-calendar-->
|
|
||||||
<!-- [(ngModel)]="dateCalendarEnum"-->
|
|
||||||
<!-- [locale]="'calendar_widget' | translate"-->
|
|
||||||
<!-- [inline]="true"-->
|
|
||||||
<!-- [monthNavigator]="true"-->
|
|
||||||
<!-- [selectionMode]="selectionKind"-->
|
|
||||||
<!-- ></p-calendar>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -24,18 +24,17 @@ import { StorageService } from '../../../../core/services/storage.service';
|
|||||||
})
|
})
|
||||||
export class DateSelectComponent implements OnInit {
|
export class DateSelectComponent implements OnInit {
|
||||||
@Input()
|
@Input()
|
||||||
public form: FormGroup;
|
form: FormGroup;
|
||||||
|
|
||||||
public showDateInterval = false;
|
displaySeveralHoursChoice = false;
|
||||||
public allowSeveralHours = false;
|
allowSeveralHours = false;
|
||||||
today = new Date();
|
today = new Date();
|
||||||
startDateInterval: string;
|
|
||||||
endDateInterval: string;
|
endDateInterval: string;
|
||||||
intervalDays: any;
|
|
||||||
intervalDaysDefault = 7;
|
intervalDaysDefault = 7;
|
||||||
dateList: DateChoice[]; // sets of days as strings, config to set identical time for days in a special days poll
|
dateList: DateChoice[] = []; // sets of dateList as strings, config to set identical time for dateList in a special dateList poll
|
||||||
timeList: TimeSlices[]; // ranges of time expressed as strings
|
timeList: TimeSlices[] = []; // ranges of time expressed as strings
|
||||||
dateCalendarEnum: Date[] = [new Date('02/09/2021')];
|
|
||||||
selectionKind = 'range';
|
selectionKind = 'range';
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@ -44,7 +43,6 @@ export class DateSelectComponent implements OnInit {
|
|||||||
private uuidService: UuidService,
|
private uuidService: UuidService,
|
||||||
private toastService: ToastService,
|
private toastService: ToastService,
|
||||||
private pollService: PollService,
|
private pollService: PollService,
|
||||||
public dateUtilities: DateUtilitiesService,
|
|
||||||
private apiService: ApiService,
|
private apiService: ApiService,
|
||||||
private storageService: StorageService,
|
private storageService: StorageService,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
@ -55,80 +53,7 @@ export class DateSelectComponent implements OnInit {
|
|||||||
this.timeList = this.storageService.timeSlices;
|
this.timeList = this.storageService.timeSlices;
|
||||||
}
|
}
|
||||||
|
|
||||||
get choices(): FormArray {
|
ngOnInit(): void {}
|
||||||
return this.form.get('choices') as FormArray;
|
|
||||||
}
|
|
||||||
|
|
||||||
get dateChoices() {
|
|
||||||
return this.form.get('dateChoices') as FormArray;
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit(): void {
|
|
||||||
// this.setDefaultDatesForInterval();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* default interval of dates proposed is from today to 7 days more
|
|
||||||
*/
|
|
||||||
setDefaultDatesForInterval(): 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);
|
|
||||||
this.form.patchValue({
|
|
||||||
startDateInterval: this.startDateInterval,
|
|
||||||
endDateInterval: this.endDateInterval,
|
|
||||||
});
|
|
||||||
this.dateCalendarEnum = [dateCurrent, this.dateUtilities.addDaysToDate(this.intervalDaysDefault, dateCurrent)];
|
|
||||||
this.countDays();
|
|
||||||
}
|
|
||||||
|
|
||||||
countDays(): void {
|
|
||||||
this.intervalDays = this.dateUtilities.countDays(
|
|
||||||
this.dateUtilities.parseInputDateToDateObject(this.startDateInterval),
|
|
||||||
this.dateUtilities.parseInputDateToDateObject(this.endDateInterval)
|
|
||||||
);
|
|
||||||
// this.cd.detectChanges();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* add all the dates between the start and end dates in the interval section
|
|
||||||
*/
|
|
||||||
addIntervalOfDates(): void {
|
|
||||||
const newIntervalArray = this.dateUtilities.getDatesInRange(
|
|
||||||
this.dateUtilities.parseInputDateToDateObject(this.startDateInterval),
|
|
||||||
this.dateUtilities.parseInputDateToDateObject(this.endDateInterval),
|
|
||||||
1
|
|
||||||
);
|
|
||||||
|
|
||||||
const converted = [];
|
|
||||||
newIntervalArray.forEach((element) => {
|
|
||||||
converted.push({
|
|
||||||
literal: element.literal,
|
|
||||||
date_object: element.date_object,
|
|
||||||
timeList: [],
|
|
||||||
});
|
|
||||||
});
|
|
||||||
this.dateList = [...new Set(converted)];
|
|
||||||
// add only dates that are not already present with a Set of unique items
|
|
||||||
console.log('this.dateList', this.dateList);
|
|
||||||
this.showDateInterval = false;
|
|
||||||
|
|
||||||
this.form.patchValue({ choices: this.dateList });
|
|
||||||
// this.dateList.forEach(elem=>{
|
|
||||||
// const newControlGroup = this.fb.group({
|
|
||||||
// label: this.fb.control('', [Validators.required]),
|
|
||||||
// url: ['', [Validators.required]],
|
|
||||||
// });
|
|
||||||
//
|
|
||||||
// this.choices.push(newControlGroup);
|
|
||||||
// })
|
|
||||||
|
|
||||||
this.toastService.display(`les dates ont été ajoutées aux réponses possibles.`);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* change time spans
|
* change time spans
|
||||||
@ -141,145 +66,14 @@ export class DateSelectComponent implements OnInit {
|
|||||||
|
|
||||||
removeAllTimes() {
|
removeAllTimes() {
|
||||||
this.timeList = [];
|
this.timeList = [];
|
||||||
|
this.dateList.map((elem) => (elem.timeList = []));
|
||||||
|
|
||||||
this.toastService.display('périodes horaires vidées');
|
this.toastService.display('périodes horaires vidées');
|
||||||
}
|
}
|
||||||
|
|
||||||
resetTimes() {
|
resetTimes() {
|
||||||
this.timeList = defaultTimeOfDay;
|
this.timeList = defaultTimeOfDay;
|
||||||
|
this.dateList.map((elem) => (elem.timeList = Object.create(defaultTimeOfDay)));
|
||||||
this.toastService.display('périodes horaires réinitialisées');
|
this.toastService.display('périodes horaires réinitialisées');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* add a time period to a specific date choice,
|
|
||||||
* focus on the new input
|
|
||||||
* @param config
|
|
||||||
* @param id
|
|
||||||
*/
|
|
||||||
addTimeToDate(config: any, id: number) {
|
|
||||||
this.timeList.push({
|
|
||||||
literal: '',
|
|
||||||
});
|
|
||||||
const selector = '[ng-reflect-choice_label="dateTime_' + id + '_Choices_' + (this.timeList.length - 1) + '"]';
|
|
||||||
// this.cd.detectChanges();
|
|
||||||
const elem = this.document.querySelector(selector);
|
|
||||||
if (elem) {
|
|
||||||
elem.focus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
addChoice(optionalLabel = ''): void {
|
|
||||||
const newControlGroup = this.fb.group({
|
|
||||||
label: this.fb.control('', [Validators.required]),
|
|
||||||
imageUrl: ['', [Validators.required]],
|
|
||||||
});
|
|
||||||
|
|
||||||
if (optionalLabel) {
|
|
||||||
newControlGroup.patchValue({
|
|
||||||
label: optionalLabel,
|
|
||||||
imageUrl: 'mon url',
|
|
||||||
});
|
|
||||||
}
|
|
||||||
this.dateChoices.push(newControlGroup);
|
|
||||||
// this.cd.detectChanges();
|
|
||||||
console.log('this.choices.length', this.choices.length);
|
|
||||||
|
|
||||||
this.focusOnChoice(this.choices.length - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
focusOnChoice(index): void {
|
|
||||||
const selector = '#choice_label_' + index;
|
|
||||||
const elem = this.document.querySelector(selector);
|
|
||||||
if (elem) {
|
|
||||||
elem.focus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
deleteChoiceField(index: number): void {
|
|
||||||
if (this.choices.length !== 1) {
|
|
||||||
this.choices.removeAt(index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
reinitChoices(): void {
|
|
||||||
this.choices.setValue([]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* handle keyboard shortcuts
|
|
||||||
* @param $event
|
|
||||||
* @param choice_number
|
|
||||||
*/
|
|
||||||
keyOnChoice($event: KeyboardEvent, choice_number: number): void {
|
|
||||||
$event.preventDefault();
|
|
||||||
|
|
||||||
console.log('this.choices.length', this.choices.length);
|
|
||||||
console.log('choice_number', choice_number);
|
|
||||||
const lastChoice = this.choices.length - 1 === choice_number;
|
|
||||||
// TODO handle shortcuts
|
|
||||||
// reset field with Ctrl + D
|
|
||||||
// add a field with Ctrl + N
|
|
||||||
// go to previous choice with arrow up
|
|
||||||
// go to next choice with arrow down
|
|
||||||
console.log('$event', $event);
|
|
||||||
|
|
||||||
if ($event.key == 'ArrowUp' && choice_number > 0) {
|
|
||||||
this.focusOnChoice(choice_number - 1);
|
|
||||||
}
|
|
||||||
if ($event.key == 'ArrowDown') {
|
|
||||||
// add a field if we are on the last choice
|
|
||||||
if (lastChoice) {
|
|
||||||
this.addChoice();
|
|
||||||
this.toastService.display('choix ajouté par raccourci "flèche bas"');
|
|
||||||
} else {
|
|
||||||
this.focusOnChoice(choice_number + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($event.ctrlKey && $event.key == 'Backspace') {
|
|
||||||
this.deleteChoiceField(choice_number);
|
|
||||||
this.toastService.display('choix supprimé par raccourci "Ctrl + retour"');
|
|
||||||
// this.cd.detectChanges();
|
|
||||||
this.focusOnChoice(Math.min(choice_number - 1, 0));
|
|
||||||
}
|
|
||||||
if ($event.ctrlKey && $event.key == 'Enter') {
|
|
||||||
// go to other fields
|
|
||||||
const elem = this.document.querySelector('#creatorEmail');
|
|
||||||
if (elem) {
|
|
||||||
elem.focus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
setDemoValues(): void {
|
|
||||||
this.addChoice('orange');
|
|
||||||
this.addChoice('raisin');
|
|
||||||
this.addChoice('abricot');
|
|
||||||
}
|
|
||||||
|
|
||||||
dropTimeItem(event: any): void {
|
|
||||||
// moveItemInArray(this.timeSlices, event.previousIndex, event.currentIndex);
|
|
||||||
if (event.previousContainer === event.container) {
|
|
||||||
moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
|
|
||||||
} else {
|
|
||||||
transferArrayItem(
|
|
||||||
event.previousContainer.data,
|
|
||||||
event.container.data,
|
|
||||||
event.previousIndex,
|
|
||||||
event.currentIndex
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dropDayItem(event: any): void {
|
|
||||||
// moveItemInArray(this.timeSlices, event.previousIndex, event.currentIndex);
|
|
||||||
if (event.previousContainer === event.container) {
|
|
||||||
moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
|
|
||||||
} else {
|
|
||||||
transferArrayItem(
|
|
||||||
event.previousContainer.data,
|
|
||||||
event.container.data,
|
|
||||||
event.previousIndex,
|
|
||||||
event.currentIndex
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,43 @@
|
|||||||
|
<div class="interval" [formGroup]="form">
|
||||||
|
<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>
|
||||||
|
<span>
|
||||||
|
{{ 'dates.add_interval' | translate }}
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
<fieldset *ngIf="showDateInterval" class="date-interval form-row is-boxed">
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column">
|
||||||
|
{{ 'dates.interval_propose' | translate }}
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<label for="start_interval" class="hidden">start</label>
|
||||||
|
<input id="start_interval" (change)="countDays()" formControlName="startDateInterval" type="date" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column">
|
||||||
|
{{ 'dates.interval_span' | translate }}
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<label for="end_interval" class="hidden">end</label>
|
||||||
|
<input id="end_interval" formControlName="endDateInterval" type="date" />
|
||||||
|
<div class="well">
|
||||||
|
{{ form.value.endDateInterval }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="span resume">soit {{ intervalDays }} jours.</div>
|
||||||
|
<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>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { IntervalComponent } from './interval.component';
|
||||||
|
|
||||||
|
describe('IntervalComponent', () => {
|
||||||
|
let component: IntervalComponent;
|
||||||
|
let fixture: ComponentFixture<IntervalComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [IntervalComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(IntervalComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,93 @@
|
|||||||
|
import { Component, Input, OnInit } from '@angular/core';
|
||||||
|
import { environment } from '../../../../../../environments/environment';
|
||||||
|
import { DateUtilitiesService } from '../../../../../core/services/date.utilities.service';
|
||||||
|
import { FormArray, FormGroup } from '@angular/forms';
|
||||||
|
import { ToastService } from '../../../../../core/services/toast.service';
|
||||||
|
import { DateChoice } from '../../../../../../../mocks/old-stuff/config/defaultConfigs';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-date-interval',
|
||||||
|
templateUrl: './interval.component.html',
|
||||||
|
styleUrls: ['./interval.component.scss'],
|
||||||
|
})
|
||||||
|
export class IntervalComponent implements OnInit {
|
||||||
|
@Input()
|
||||||
|
public form: FormGroup;
|
||||||
|
showDateInterval = true;
|
||||||
|
intervalDays: any;
|
||||||
|
intervalDaysDefault = environment.interval_days_default;
|
||||||
|
startDateInterval: Date;
|
||||||
|
startDateIntervalString: string;
|
||||||
|
endDateInterval: Date;
|
||||||
|
endDateIntervalString: string;
|
||||||
|
dateList: DateChoice[]; // sets of dateList as strings, config to set identical time for dateList in a special dateList poll
|
||||||
|
dateCalendarEnum: Date[] = [new Date('02/09/2021')];
|
||||||
|
|
||||||
|
constructor(public dateUtilities: DateUtilitiesService, private toastService: ToastService) {}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.setDefaultDatesForInterval();
|
||||||
|
}
|
||||||
|
|
||||||
|
countDays(): void {
|
||||||
|
this.intervalDays = this.dateUtilities.countDays(
|
||||||
|
this.dateUtilities.parseInputDateToDateObject(this.startDateInterval),
|
||||||
|
this.dateUtilities.parseInputDateToDateObject(this.endDateInterval)
|
||||||
|
);
|
||||||
|
// this.cd.detectChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* add all the dates between the start and end dates in the interval section
|
||||||
|
*/
|
||||||
|
addIntervalOfDates(): void {
|
||||||
|
const newIntervalArray = this.dateUtilities.getDatesInRange(
|
||||||
|
this.dateUtilities.parseInputDateToDateObject(this.startDateInterval),
|
||||||
|
this.dateUtilities.parseInputDateToDateObject(this.endDateInterval),
|
||||||
|
1
|
||||||
|
);
|
||||||
|
|
||||||
|
const converted = [];
|
||||||
|
newIntervalArray.forEach((element) => {
|
||||||
|
converted.push({
|
||||||
|
literal: element.literal,
|
||||||
|
date_object: element.date_object,
|
||||||
|
timeList: [],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
this.dateList = [...new Set(converted)];
|
||||||
|
// add only dates that are not already present with a Set of unique items
|
||||||
|
console.log('this.dateList', this.dateList);
|
||||||
|
this.showDateInterval = false;
|
||||||
|
|
||||||
|
this.form.patchValue({ choices: this.dateList });
|
||||||
|
|
||||||
|
this.toastService.display(`les dates ont été ajoutées aux réponses possibles.`);
|
||||||
|
}
|
||||||
|
|
||||||
|
get dateChoices() {
|
||||||
|
return this.form.get('dateChoices') as FormArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* default interval of dates proposed is from today to 7 dateList more
|
||||||
|
*/
|
||||||
|
setDefaultDatesForInterval(): void {
|
||||||
|
if (this.form) {
|
||||||
|
const dateCurrent = new Date();
|
||||||
|
// const dateJson = dateCurrent.toISOString();
|
||||||
|
this.startDateInterval = dateCurrent;
|
||||||
|
this.endDateInterval = this.dateUtilities.addDaysToDate(this.intervalDaysDefault, dateCurrent);
|
||||||
|
|
||||||
|
this.form.patchValue({
|
||||||
|
startDateInterval: this.startDateInterval,
|
||||||
|
endDateInterval: this.endDateInterval,
|
||||||
|
});
|
||||||
|
this.dateCalendarEnum = [
|
||||||
|
dateCurrent,
|
||||||
|
this.dateUtilities.addDaysToDate(this.intervalDaysDefault, dateCurrent),
|
||||||
|
];
|
||||||
|
this.countDays();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,120 @@
|
|||||||
|
<div class="day-list-container">
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column">
|
||||||
|
<!-- ajouter une date-->
|
||||||
|
<button class="btn btn--primary" (click)="addChoice()">
|
||||||
|
{{ 'dates.add' | translate }}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<span class="count-dates title">
|
||||||
|
{{ dateList.length }}
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
{{ 'dates.count_dates' | translate }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="columns days-list" cdkDropList [cdkDropListData]="dateList" (cdkDropListDropped)="dropDayItem($event)">
|
||||||
|
<div class="column">
|
||||||
|
<h2>Dates</h2>
|
||||||
|
<button class="btn button-help" (click)="openKeyboardShortcutsModal()">
|
||||||
|
💁 Raccourcis
|
||||||
|
</button>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<div *ngFor="let choice of dateList; index as id" class="date-choice" cdkDrag>
|
||||||
|
<input
|
||||||
|
[(ngModel)]="choice.date_object"
|
||||||
|
(keyup)="keyOnChoice($event, id)"
|
||||||
|
name="dateChoices_{{ id }}"
|
||||||
|
id="dateChoices_{{ id }}"
|
||||||
|
useValueAsDate
|
||||||
|
type="date"
|
||||||
|
/>
|
||||||
|
<button (click)="dateList.splice(id, 1)" class="btn btn-warning">
|
||||||
|
<i class="fa fa-times" aria-hidden="true"></i>
|
||||||
|
</button>
|
||||||
|
<button (click)="addTimeToDate(choice, id)" *ngIf="hasSeveralHours" class="btn btn--primary">
|
||||||
|
{{ 'dates.add_time' | translate }}
|
||||||
|
</button>
|
||||||
|
<div *ngIf="hasSeveralHours" class="several-times">
|
||||||
|
plage horaire distincte
|
||||||
|
<br />
|
||||||
|
<app-time-list [timeSlices]="choice.timeList"></app-time-list>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p-dialog class="url-dialog" [(visible)]="display" [modal]="true" [closable]="true">
|
||||||
|
<p-header>
|
||||||
|
💁 Aide, Raccourcis clavier
|
||||||
|
<button class="btn button-help pull-right" (click)="display = false">
|
||||||
|
<i class="fa fa-times"></i>
|
||||||
|
</button>
|
||||||
|
</p-header>
|
||||||
|
|
||||||
|
Vous pouvez naviguer d'un champ de date à un autre avec les flèches du clavier.
|
||||||
|
|
||||||
|
<app-wip-todo></app-wip-todo>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
Fonction
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Raccourci
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
Créer un nouveau choix
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Ctrl + N
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
Naviguer vers le champ suivant. Créée un nouveau champ si effectué sur le dernier champ.
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Ctrl + flèche bas
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
réinitialiser le champ actuel
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Ctrl + effacer
|
||||||
|
<br />
|
||||||
|
ou
|
||||||
|
<br />
|
||||||
|
Ctrl + supprimer
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
Alterner entre un sondage de type Date et un sondage texte
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Alt + D
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<td>
|
||||||
|
Tout envoyer
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Ctrl + entrée
|
||||||
|
</td>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</p-dialog>
|
||||||
|
</div>
|
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { DayListComponent } from './day-list.component';
|
||||||
|
|
||||||
|
describe('ListComponent', () => {
|
||||||
|
let component: DayListComponent;
|
||||||
|
let fixture: ComponentFixture<DayListComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [DayListComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(DayListComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,149 @@
|
|||||||
|
import { Component, Inject, Input, OnInit } from '@angular/core';
|
||||||
|
import { CdkDragDrop, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
|
||||||
|
import { DateChoice } from '../../../../../../../../mocks/old-stuff/config/defaultConfigs';
|
||||||
|
import { DOCUMENT } from '@angular/common';
|
||||||
|
import { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||||
|
import { LocalStorageService } from 'ngx-webstorage';
|
||||||
|
import { ToastService } from '../../../../../../core/services/toast.service';
|
||||||
|
import { StorageService } from '../../../../../../core/services/storage.service';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-day-list',
|
||||||
|
templateUrl: './day-list.component.html',
|
||||||
|
styleUrls: ['./day-list.component.scss'],
|
||||||
|
})
|
||||||
|
export class DayListComponent {
|
||||||
|
@Input()
|
||||||
|
form: FormGroup;
|
||||||
|
@Input()
|
||||||
|
public dateList: Array<any> = [];
|
||||||
|
@Input()
|
||||||
|
public hasSeveralHours: boolean;
|
||||||
|
timeList: any;
|
||||||
|
display = false;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private toastService: ToastService,
|
||||||
|
@Inject(DOCUMENT) private document: any,
|
||||||
|
private storageService: StorageService
|
||||||
|
) {
|
||||||
|
this.setDemoValues();
|
||||||
|
}
|
||||||
|
|
||||||
|
reinitChoices(): void {
|
||||||
|
this.dateList = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
setDemoValues(): void {
|
||||||
|
this.addChoice('orange');
|
||||||
|
this.addChoice('raisin');
|
||||||
|
this.addChoice('abricot');
|
||||||
|
}
|
||||||
|
dropDayItem(event: any): void {
|
||||||
|
// moveItemInArray(this.timeSlices, event.previousIndex, event.currentIndex);
|
||||||
|
if (event.previousContainer === event.container) {
|
||||||
|
moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
|
||||||
|
} else {
|
||||||
|
transferArrayItem(
|
||||||
|
event.previousContainer.data,
|
||||||
|
event.container.data,
|
||||||
|
event.previousIndex,
|
||||||
|
event.currentIndex
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* add a time period to a specific date choice,
|
||||||
|
* focus on the new input
|
||||||
|
* @param config
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
addTimeToDate(config: any, id: number) {
|
||||||
|
this.timeList.push({
|
||||||
|
literal: '',
|
||||||
|
});
|
||||||
|
const selector = '[ng-reflect-choice_label="dateTime_' + id + '_ dateList_' + (this.timeList.length - 1) + '"]';
|
||||||
|
// this.cd.detectChanges();
|
||||||
|
const elem = this.document.querySelector(selector);
|
||||||
|
if (elem) {
|
||||||
|
elem.focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* handle keyboard shortcuts
|
||||||
|
* @param $event
|
||||||
|
* @param choice_number
|
||||||
|
*/
|
||||||
|
keyOnChoice($event: KeyboardEvent, choice_number: number): void {
|
||||||
|
$event.preventDefault();
|
||||||
|
|
||||||
|
console.log('this. dateList.length', this.dateList.length);
|
||||||
|
console.log('choice_number', choice_number);
|
||||||
|
const lastChoice = this.dateList.length - 1 === choice_number;
|
||||||
|
// TODO handle shortcuts
|
||||||
|
// reset field with Ctrl + D
|
||||||
|
// add a field with Ctrl + N
|
||||||
|
// go to previous choice with arrow up
|
||||||
|
// go to next choice with arrow down
|
||||||
|
console.log('$event', $event);
|
||||||
|
|
||||||
|
if ($event.ctrlKey && $event.key == 'ArrowUp' && choice_number > 0) {
|
||||||
|
this.focusOnChoice(choice_number - 1);
|
||||||
|
}
|
||||||
|
if ($event.ctrlKey && ($event.key == 'ArrowDown' || $event.key == 'ArrowRight')) {
|
||||||
|
// add a field if we are on the last choice
|
||||||
|
if (lastChoice) {
|
||||||
|
this.addChoice();
|
||||||
|
this.toastService.display('choix ajouté par raccourci "flèche bas"');
|
||||||
|
} else {
|
||||||
|
this.focusOnChoice(choice_number + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($event.ctrlKey && $event.key == 'Backspace') {
|
||||||
|
this.deleteChoiceField(choice_number);
|
||||||
|
this.toastService.display('choix supprimé par raccourci "Ctrl + retour"');
|
||||||
|
// this.cd.detectChanges();
|
||||||
|
this.focusOnChoice(Math.min(choice_number - 1, 0));
|
||||||
|
}
|
||||||
|
if ($event.ctrlKey && $event.key == 'Enter') {
|
||||||
|
// go to other fields
|
||||||
|
const elem = this.document.querySelector('#creatorEmail');
|
||||||
|
if (elem) {
|
||||||
|
elem.focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addChoice(optionalLabel = ''): void {
|
||||||
|
this.storageService.dateList.push({
|
||||||
|
literal: '',
|
||||||
|
timeList: [],
|
||||||
|
date_object: new Date(),
|
||||||
|
});
|
||||||
|
|
||||||
|
// this.cd.detectChanges();
|
||||||
|
console.log('this.choices.length', this.storageService.dateList.length);
|
||||||
|
|
||||||
|
this.focusOnChoice(this.storageService.dateList.length - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
focusOnChoice(index): void {
|
||||||
|
const selector = '#choice_label_' + index;
|
||||||
|
const elem = this.document.querySelector(selector);
|
||||||
|
if (elem) {
|
||||||
|
elem.focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
deleteChoiceField(index: number): void {
|
||||||
|
if (this.dateList.length !== 1) {
|
||||||
|
this.dateList.splice(index, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
openKeyboardShortcutsModal() {
|
||||||
|
this.display = true;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
<p>time-list works!</p>
|
||||||
|
<div *ngFor="let time of timeList; index as id" class="time-choice">
|
||||||
|
<label for="timeChoices_{{ id }}">
|
||||||
|
<i class="fa fa-clock-o" aria-hidden="true"></i>
|
||||||
|
</label>
|
||||||
|
<input [(ngModel)]="time.literal" name="timeChoices_{{ id }}" type="text" id="timeChoices_{{ id }}" />
|
||||||
|
<button (click)="time.timeList.splice(id, 1)" class="btn btn-warning">
|
||||||
|
<i class="fa fa-times" aria-hidden="true"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { TimeListComponent } from './time-list.component';
|
||||||
|
|
||||||
|
describe('TimeListComponent', () => {
|
||||||
|
let component: TimeListComponent;
|
||||||
|
let fixture: ComponentFixture<TimeListComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [TimeListComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(TimeListComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,31 @@
|
|||||||
|
import { Component, Input, OnInit } from '@angular/core';
|
||||||
|
import { TimeSlices } from '../../../../../../../../mocks/old-stuff/config/defaultConfigs';
|
||||||
|
import { moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-time-list',
|
||||||
|
templateUrl: './time-list.component.html',
|
||||||
|
styleUrls: ['./time-list.component.scss'],
|
||||||
|
})
|
||||||
|
export class TimeListComponent implements OnInit {
|
||||||
|
@Input()
|
||||||
|
public timeSlices: TimeSlices[];
|
||||||
|
timeList: any;
|
||||||
|
constructor() {}
|
||||||
|
|
||||||
|
ngOnInit(): void {}
|
||||||
|
|
||||||
|
dropTimeItem(event: any): void {
|
||||||
|
// moveItemInArray(this.timeSlices, event.previousIndex, event.currentIndex);
|
||||||
|
if (event.previousContainer === event.container) {
|
||||||
|
moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
|
||||||
|
} else {
|
||||||
|
transferArrayItem(
|
||||||
|
event.previousContainer.data,
|
||||||
|
event.container.data,
|
||||||
|
event.previousIndex,
|
||||||
|
event.currentIndex
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
<!-- date picker calendrier-->
|
||||||
|
<div class="picker" [formGroup]="form">
|
||||||
|
<div class="column calendar-column">
|
||||||
|
<button class="btn" (click)="selectionKind = 'range'" [class.is-primary]="selectionKind == 'range'">
|
||||||
|
plage de jours
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button class="btn" (click)="selectionKind = 'multiple'" [class.is-primary]="selectionKind == 'multiple'">
|
||||||
|
jours séparés
|
||||||
|
</button>
|
||||||
|
<button class="btn" (click)="setDefaultDatesForInterval()">
|
||||||
|
réinitialiser
|
||||||
|
</button>
|
||||||
|
<button class="btn" (click)="dateCalendarEnum = [today]">
|
||||||
|
vider
|
||||||
|
</button>
|
||||||
|
<div class="text-center">
|
||||||
|
<br />
|
||||||
|
<p-calendar
|
||||||
|
[(ngModel)]="dateCalendarEnum"
|
||||||
|
[locale]="'calendar_widget' | translate"
|
||||||
|
[inline]="true"
|
||||||
|
[monthNavigator]="true"
|
||||||
|
[selectionMode]="selectionKind"
|
||||||
|
></p-calendar>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,24 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { PickerComponent } from './picker.component';
|
||||||
|
|
||||||
|
describe('PickerComponent', () => {
|
||||||
|
let component: PickerComponent;
|
||||||
|
let fixture: ComponentFixture<PickerComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [PickerComponent],
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(PickerComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,21 @@
|
|||||||
|
import { Component, Input, OnInit } from '@angular/core';
|
||||||
|
import { FormGroup } from '@angular/forms';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-picker',
|
||||||
|
templateUrl: './picker.component.html',
|
||||||
|
styleUrls: ['./picker.component.scss'],
|
||||||
|
})
|
||||||
|
export class PickerComponent implements OnInit {
|
||||||
|
@Input()
|
||||||
|
public form: FormGroup;
|
||||||
|
selectionKind = 'multiple';
|
||||||
|
dateCalendarEnum: any[];
|
||||||
|
today: Date = new Date();
|
||||||
|
|
||||||
|
constructor() {}
|
||||||
|
|
||||||
|
ngOnInit(): void {}
|
||||||
|
|
||||||
|
setDefaultDatesForInterval() {}
|
||||||
|
}
|
@ -1,7 +1,6 @@
|
|||||||
<div class="admin-form padded">
|
<div class="admin-form padded">
|
||||||
<div class="container is-max-widescreen">
|
<div class="container is-max-widescreen">
|
||||||
<form [formGroup]="form">
|
<form [formGroup]="form">
|
||||||
<app-errors-list [form]="form"></app-errors-list>
|
|
||||||
<header class="columns">
|
<header class="columns">
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<h1 class="title is-2">
|
<h1 class="title is-2">
|
||||||
@ -40,27 +39,28 @@
|
|||||||
*ngIf="advancedDisplayEnabled"
|
*ngIf="advancedDisplayEnabled"
|
||||||
></app-advanced-config>
|
></app-advanced-config>
|
||||||
|
|
||||||
<div class="bar-nav-admin">
|
<!-- <div class="bar-nav-admin">-->
|
||||||
<div class="columns">
|
<!-- <div class="columns">-->
|
||||||
<div class="column">
|
<!-- <div class="column">-->
|
||||||
<p class="control">
|
<!-- <p class="control">-->
|
||||||
<a class="button is-light" (click)="goPreviousStep()">
|
<!-- <a class="button is-light" (click)="goPreviousStep()">-->
|
||||||
Précédent
|
<!-- Précédent-->
|
||||||
</a>
|
<!-- </a>-->
|
||||||
</p>
|
<!-- </p>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
<div class="column">
|
<!-- <div class="column">-->
|
||||||
<p class="control text-right">
|
<!-- <p class="control text-right">-->
|
||||||
<a class="button is-primary" (click)="goNextStep()">
|
<!-- <a class="button is-primary" (click)="goNextStep()">-->
|
||||||
Suivant
|
<!-- Suivant-->
|
||||||
</a>
|
<!-- </a>-->
|
||||||
</p>
|
<!-- </p>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
<app-picker [form]="form" *ngIf="displayDatePicker"></app-picker>
|
||||||
|
<app-errors-list [form]="form"></app-errors-list>
|
||||||
<p>
|
<p>
|
||||||
<i>
|
<i>
|
||||||
{{ 'choices.helper' | translate }}
|
{{ 'choices.helper' | translate }}
|
||||||
@ -108,6 +108,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- <app-success [poll]="poll"></app-success>-->
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -9,7 +9,6 @@ import { Router } from '@angular/router';
|
|||||||
import { environment } from '../../../../environments/environment';
|
import { environment } from '../../../../environments/environment';
|
||||||
import { PollUtilitiesService } from '../../../core/services/poll.utilities.service';
|
import { PollUtilitiesService } from '../../../core/services/poll.utilities.service';
|
||||||
import { StorageService } from '../../../core/services/storage.service';
|
import { StorageService } from '../../../core/services/storage.service';
|
||||||
import { defaultDates, defaultTimeOfDay } from '../../../../../mocks/old-stuff/config/defaultConfigs';
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-admin-form',
|
selector: 'app-admin-form',
|
||||||
@ -21,7 +20,8 @@ export class FormComponent implements OnInit {
|
|||||||
public poll?: Poll;
|
public poll?: Poll;
|
||||||
public form: FormGroup;
|
public form: FormGroup;
|
||||||
|
|
||||||
public advancedDisplayEnabled = true;
|
public displayDatePicker = false;
|
||||||
|
public advancedDisplayEnabled = false;
|
||||||
public show_debug_data = false;
|
public show_debug_data = false;
|
||||||
public currentStep = 'base';
|
public currentStep = 'base';
|
||||||
public steps = ['base', 'choices', 'advanced'];
|
public steps = ['base', 'choices', 'advanced'];
|
||||||
@ -101,6 +101,10 @@ export class FormComponent implements OnInit {
|
|||||||
});
|
});
|
||||||
console.log('this.form ', this.form);
|
console.log('this.form ', this.form);
|
||||||
|
|
||||||
|
// take back values from pollservice
|
||||||
|
this.form.patchValue(this.pollService.poll);
|
||||||
|
this.form.patchValue({ creatorPseudo: 'Chuck Norris', creatorEmail: 'chucknorris@example.com' });
|
||||||
|
|
||||||
if (showDemoValues) {
|
if (showDemoValues) {
|
||||||
this.setDemoValues();
|
this.setDemoValues();
|
||||||
this.toastService.display('default values filled for demo');
|
this.toastService.display('default values filled for demo');
|
||||||
@ -116,6 +120,10 @@ export class FormComponent implements OnInit {
|
|||||||
*/
|
*/
|
||||||
setDemoValues(): void {
|
setDemoValues(): void {
|
||||||
const title = 'le titre de démo oh oh ' + new Date().getTime();
|
const title = 'le titre de démo oh oh ' + new Date().getTime();
|
||||||
|
|
||||||
|
// this.form.patchValue(this.pollService.poll);
|
||||||
|
// this.form.patchValue({ creatorPseudo: 'Chuck Norris', creatorEmail: 'chucknorris@example.com' });
|
||||||
|
|
||||||
this.form.patchValue({
|
this.form.patchValue({
|
||||||
title: title,
|
title: title,
|
||||||
custom_url: this.pollUtilitiesService.makeSlugFromString(title),
|
custom_url: this.pollUtilitiesService.makeSlugFromString(title),
|
||||||
@ -142,14 +150,6 @@ export class FormComponent implements OnInit {
|
|||||||
startDateInterval: new Date(),
|
startDateInterval: new Date(),
|
||||||
endDateInterval: new Date(),
|
endDateInterval: new Date(),
|
||||||
comments: [],
|
comments: [],
|
||||||
// choices: [
|
|
||||||
// {
|
|
||||||
// name: 'un choix',
|
|
||||||
// url: 'https://placekitten.com/120/150',
|
|
||||||
// },
|
|
||||||
// ],
|
|
||||||
// dateChoices: defaultDates,
|
|
||||||
// timeChoices: defaultTimeOfDay,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,7 +17,6 @@ export class LanguageSelectorComponent implements OnInit {
|
|||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
this.availableLanguages = this.languageService.getAvailableLanguages();
|
this.availableLanguages = this.languageService.getAvailableLanguages();
|
||||||
console.log('this.availableLanguages', this.availableLanguages);
|
|
||||||
|
|
||||||
this.currentLang = this.languageService.getLangage();
|
this.currentLang = this.languageService.getLangage();
|
||||||
this.nextLang();
|
this.nextLang();
|
||||||
@ -29,10 +28,6 @@ export class LanguageSelectorComponent implements OnInit {
|
|||||||
|
|
||||||
nextLang(): void {
|
nextLang(): void {
|
||||||
console.log('this.currentLang ', this.currentLang);
|
console.log('this.currentLang ', this.currentLang);
|
||||||
console.log('this.storageService.language ', this.storageService.language);
|
|
||||||
console.log("this.availableLanguages['FR']", this.availableLanguages['FR']);
|
|
||||||
|
|
||||||
console.log('this.availableLanguages', this.availableLanguages);
|
|
||||||
console.log('TODO');
|
console.log('TODO');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -82,7 +82,7 @@ msgstr ""
|
|||||||
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
||||||
#: +it+is+developed+by+the+Framasoft+association.
|
#: +it+is+developed+by+the+Framasoft+association.
|
||||||
msgid ""
|
msgid ""
|
||||||
"software developed by the University of Strasbourg. These days, it is "
|
"software developed by the University of Strasbourg. These dateList, it is "
|
||||||
"developed by the Framasoft association."
|
"developed by the Framasoft association."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"eo diazezet Framadate. Ur meziant diorroet gant Skol-Veur Straßburg an hini "
|
"eo diazezet Framadate. Ur meziant diorroet gant Skol-Veur Straßburg an hini "
|
||||||
@ -916,7 +916,7 @@ msgid "Your name"
|
|||||||
msgstr "Hoc'h anv"
|
msgstr "Hoc'h anv"
|
||||||
|
|
||||||
#: .Generic.days
|
#: .Generic.days
|
||||||
msgid "days"
|
msgid "dateList"
|
||||||
msgstr "a zevezhioù"
|
msgstr "a zevezhioù"
|
||||||
|
|
||||||
#: .Generic.for
|
#: .Generic.for
|
||||||
@ -1632,7 +1632,7 @@ msgid "Remove a time slot"
|
|||||||
msgstr "Dileml an eur diwezhañ"
|
msgstr "Dileml an eur diwezhañ"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+days
|
#: .Step+2+date.Remove+all+days
|
||||||
msgid "Remove all days"
|
msgid "Remove all dateList"
|
||||||
msgstr "Dilemel an holl zevezhioù"
|
msgstr "Dilemel an holl zevezhioù"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+times
|
#: .Step+2+date.Remove+all+times
|
||||||
@ -1647,13 +1647,13 @@ msgstr "Dilemel an devezh-mañ"
|
|||||||
#: +two+time+slots+on+one+day+or+two+days).
|
#: +two+time+slots+on+one+day+or+two+days).
|
||||||
msgid ""
|
msgid ""
|
||||||
"To schedule an event you need to provide at least two choices (e.g., two "
|
"To schedule an event you need to provide at least two choices (e.g., two "
|
||||||
"time slots on one day or two days)."
|
"time slots on one day or two dateList)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Evit krouiñ ur sontadeg deiziadoù eo ret deoc'h kinnig daou zibab d'an "
|
"Evit krouiñ ur sontadeg deiziadoù eo ret deoc'h kinnig daou zibab d'an "
|
||||||
"nebeutañ (div eur evit an hevelep devezh pe daou zevezh)."
|
"nebeutañ (div eur evit an hevelep devezh pe daou zevezh)."
|
||||||
|
|
||||||
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
||||||
msgid "You can add or remove additional days and times with the buttons"
|
msgid "You can add or remove additional dateList and times with the buttons"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Gallout a rit ouzhpennañ pe dilemel devezhioù hag eurioù ouzhpenn gant an "
|
"Gallout a rit ouzhpennañ pe dilemel devezhioù hag eurioù ouzhpenn gant an "
|
||||||
"afelloù"
|
"afelloù"
|
||||||
@ -1711,7 +1711,7 @@ msgid "Your poll will automatically be archived"
|
|||||||
msgstr "Diellaouet e vo ho sontadeg ent emgefreek"
|
msgstr "Diellaouet e vo ho sontadeg ent emgefreek"
|
||||||
|
|
||||||
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
||||||
msgid "Your poll will be automatically archived in %d days."
|
msgid "Your poll will be automatically archived in %d dateList."
|
||||||
msgstr "Diellaouet e vo ho sontadeg a-benn %d a zevezhioù ent emgefreek."
|
msgstr "Diellaouet e vo ho sontadeg a-benn %d a zevezhioù ent emgefreek."
|
||||||
|
|
||||||
#: .Step+3.after+the+last+date+of+your+poll.
|
#: .Step+3.after+the+last+date+of+your+poll.
|
||||||
|
@ -84,7 +84,7 @@ msgstr ""
|
|||||||
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
||||||
#: +it+is+developed+by+the+Framasoft+association.
|
#: +it+is+developed+by+the+Framasoft+association.
|
||||||
msgid ""
|
msgid ""
|
||||||
"software developed by the University of Strasbourg. These days, it is "
|
"software developed by the University of Strasbourg. These dateList, it is "
|
||||||
"developed by the Framasoft association."
|
"developed by the Framasoft association."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"programari desenvolupat per la Universitat d'Estrasburg. Actualment "
|
"programari desenvolupat per la Universitat d'Estrasburg. Actualment "
|
||||||
@ -933,7 +933,7 @@ msgid "Your name"
|
|||||||
msgstr "El vostre nom"
|
msgstr "El vostre nom"
|
||||||
|
|
||||||
#: .Generic.days
|
#: .Generic.days
|
||||||
msgid "days"
|
msgid "dateList"
|
||||||
msgstr "dies"
|
msgstr "dies"
|
||||||
|
|
||||||
#: .Generic.for
|
#: .Generic.for
|
||||||
@ -1650,7 +1650,7 @@ msgid "Remove a time slot"
|
|||||||
msgstr "Elimina un espai horari"
|
msgstr "Elimina un espai horari"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+days
|
#: .Step+2+date.Remove+all+days
|
||||||
msgid "Remove all days"
|
msgid "Remove all dateList"
|
||||||
msgstr "Elimina tots els dies"
|
msgstr "Elimina tots els dies"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+times
|
#: .Step+2+date.Remove+all+times
|
||||||
@ -1665,13 +1665,13 @@ msgstr "Elimina aquest dia"
|
|||||||
#: +two+time+slots+on+one+day+or+two+days).
|
#: +two+time+slots+on+one+day+or+two+days).
|
||||||
msgid ""
|
msgid ""
|
||||||
"To schedule an event you need to provide at least two choices (e.g., two "
|
"To schedule an event you need to provide at least two choices (e.g., two "
|
||||||
"time slots on one day or two days)."
|
"time slots on one day or two dateList)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Per a programar un esdeveniment, cal que proporcioneu almenys dues opcions ("
|
"Per a programar un esdeveniment, cal que proporcioneu almenys dues opcions ("
|
||||||
"per exemple, dos espais horaris en un o dos dies)."
|
"per exemple, dos espais horaris en un o dos dies)."
|
||||||
|
|
||||||
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
||||||
msgid "You can add or remove additional days and times with the buttons"
|
msgid "You can add or remove additional dateList and times with the buttons"
|
||||||
msgstr "Podeu afegir o treure dies i hores addicionals amb els botons"
|
msgstr "Podeu afegir o treure dies i hores addicionals amb els botons"
|
||||||
|
|
||||||
#: .Step+3.Back+to+step+2
|
#: .Step+3.Back+to+step+2
|
||||||
@ -1727,7 +1727,7 @@ msgid "Your poll will automatically be archived"
|
|||||||
msgstr "L'enquesta s'arxivarà automàticament"
|
msgstr "L'enquesta s'arxivarà automàticament"
|
||||||
|
|
||||||
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
||||||
msgid "Your poll will be automatically archived in %d days."
|
msgid "Your poll will be automatically archived in %d dateList."
|
||||||
msgstr "L'enquesta s'arxivarà automàticament d'aquí a %d dies."
|
msgstr "L'enquesta s'arxivarà automàticament d'aquí a %d dies."
|
||||||
|
|
||||||
#: .Step+3.after+the+last+date+of+your+poll.
|
#: .Step+3.after+the+last+date+of+your+poll.
|
||||||
|
@ -85,7 +85,7 @@ msgstr ""
|
|||||||
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
||||||
#: +it+is+developed+by+the+Framasoft+association.
|
#: +it+is+developed+by+the+Framasoft+association.
|
||||||
msgid ""
|
msgid ""
|
||||||
"software developed by the University of Strasbourg. These days, it is "
|
"software developed by the University of Strasbourg. These dateList, it is "
|
||||||
"developed by the Framasoft association."
|
"developed by the Framasoft association."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
", einer von der Universität von Straßburg entwickelten Software. Heute wird "
|
", einer von der Universität von Straßburg entwickelten Software. Heute wird "
|
||||||
@ -942,7 +942,7 @@ msgid "Your name"
|
|||||||
msgstr "Ihr Name"
|
msgstr "Ihr Name"
|
||||||
|
|
||||||
#: .Generic.days
|
#: .Generic.days
|
||||||
msgid "days"
|
msgid "dateList"
|
||||||
msgstr "Tage"
|
msgstr "Tage"
|
||||||
|
|
||||||
#: .Generic.for
|
#: .Generic.for
|
||||||
@ -1662,7 +1662,7 @@ msgid "Remove a time slot"
|
|||||||
msgstr "Eine Uhrzeit entfernen"
|
msgstr "Eine Uhrzeit entfernen"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+days
|
#: .Step+2+date.Remove+all+days
|
||||||
msgid "Remove all days"
|
msgid "Remove all dateList"
|
||||||
msgstr "Alle Tage entfernen"
|
msgstr "Alle Tage entfernen"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+times
|
#: .Step+2+date.Remove+all+times
|
||||||
@ -1677,14 +1677,14 @@ msgstr "Diesen Tag entfernen"
|
|||||||
#: +two+time+slots+on+one+day+or+two+days).
|
#: +two+time+slots+on+one+day+or+two+days).
|
||||||
msgid ""
|
msgid ""
|
||||||
"To schedule an event you need to provide at least two choices (e.g., two "
|
"To schedule an event you need to provide at least two choices (e.g., two "
|
||||||
"time slots on one day or two days)."
|
"time slots on one day or two dateList)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Um eine Terminabsprache zu konfigurieren, müssen Sie mindestens zwei "
|
"Um eine Terminabsprache zu konfigurieren, müssen Sie mindestens zwei "
|
||||||
"alternative Zeitpunkte vorschlagen (zwei Uhrzeiten am gleichen Tag oder "
|
"alternative Zeitpunkte vorschlagen (zwei Uhrzeiten am gleichen Tag oder "
|
||||||
"verschiedene Tage)."
|
"verschiedene Tage)."
|
||||||
|
|
||||||
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
||||||
msgid "You can add or remove additional days and times with the buttons"
|
msgid "You can add or remove additional dateList and times with the buttons"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sie können weitere Tage und Uhrzeiten über die Buttons hinzufügen oder "
|
"Sie können weitere Tage und Uhrzeiten über die Buttons hinzufügen oder "
|
||||||
"entfernen"
|
"entfernen"
|
||||||
@ -1742,7 +1742,7 @@ msgid "Your poll will automatically be archived"
|
|||||||
msgstr "Ihre Umfrage wird automatisch archiviert"
|
msgstr "Ihre Umfrage wird automatisch archiviert"
|
||||||
|
|
||||||
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
||||||
msgid "Your poll will be automatically archived in %d days."
|
msgid "Your poll will be automatically archived in %d dateList."
|
||||||
msgstr "Ihre Umfrage wird automatisch in %d Tagen archiviert werden."
|
msgstr "Ihre Umfrage wird automatisch in %d Tagen archiviert werden."
|
||||||
|
|
||||||
#: .Step+3.after+the+last+date+of+your+poll.
|
#: .Step+3.after+the+last+date+of+your+poll.
|
||||||
|
@ -83,7 +83,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days,+it+is+developed+by+the+Framasoft+association.
|
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days,+it+is+developed+by+the+Framasoft+association.
|
||||||
msgid ""
|
msgid ""
|
||||||
"software developed by the University of Strasbourg. These days, it is "
|
"software developed by the University of Strasbourg. These dateList, it is "
|
||||||
"developed by the Framasoft association."
|
"developed by the Framasoft association."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"λογισμικό αναπτυγμένο από το Πανεπιστήμιο του Στρασβούργου. Σήμερα, "
|
"λογισμικό αναπτυγμένο από το Πανεπιστήμιο του Στρασβούργου. Σήμερα, "
|
||||||
@ -926,7 +926,7 @@ msgid "Your name"
|
|||||||
msgstr "Το όνομά σας"
|
msgstr "Το όνομά σας"
|
||||||
|
|
||||||
#: .Generic.days
|
#: .Generic.days
|
||||||
msgid "days"
|
msgid "dateList"
|
||||||
msgstr "ημέρες"
|
msgstr "ημέρες"
|
||||||
|
|
||||||
#: .Generic.for
|
#: .Generic.for
|
||||||
@ -1640,7 +1640,7 @@ msgid "Remove a time slot"
|
|||||||
msgstr "Αφαίρεση ενός πεδίου ώρας"
|
msgstr "Αφαίρεση ενός πεδίου ώρας"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+days
|
#: .Step+2+date.Remove+all+days
|
||||||
msgid "Remove all days"
|
msgid "Remove all dateList"
|
||||||
msgstr "Αφαίρεση όλων των ημερών"
|
msgstr "Αφαίρεση όλων των ημερών"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+times
|
#: .Step+2+date.Remove+all+times
|
||||||
@ -1654,13 +1654,13 @@ msgstr "Αφαίρεση αυτής της ημέρας"
|
|||||||
#: .Step+2+date.To+schedule+an+event+you+need+to+provide+at+least+two+choices+(e.g.,+two+time+slots+on+one+day+or+two+days).
|
#: .Step+2+date.To+schedule+an+event+you+need+to+provide+at+least+two+choices+(e.g.,+two+time+slots+on+one+day+or+two+days).
|
||||||
msgid ""
|
msgid ""
|
||||||
"To schedule an event you need to provide at least two choices (e.g., two "
|
"To schedule an event you need to provide at least two choices (e.g., two "
|
||||||
"time slots on one day or two days)."
|
"time slots on one day or two dateList)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Για τον προγραμματισμό μιας δραστηριότητας πρέπει να παρέχετε τουλάχιστον "
|
"Για τον προγραμματισμό μιας δραστηριότητας πρέπει να παρέχετε τουλάχιστον "
|
||||||
"δύο επιλογές (π.χ, δύο πεδία ώρας σε μία ημέρα, ή δύο ημέρες)."
|
"δύο επιλογές (π.χ, δύο πεδία ώρας σε μία ημέρα, ή δύο ημέρες)."
|
||||||
|
|
||||||
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
||||||
msgid "You can add or remove additional days and times with the buttons"
|
msgid "You can add or remove additional dateList and times with the buttons"
|
||||||
msgstr "Μπορείτε να προσθέσετε ή να αφαιρέσετε ημέρες και ώρες με τα κουμπιά"
|
msgstr "Μπορείτε να προσθέσετε ή να αφαιρέσετε ημέρες και ώρες με τα κουμπιά"
|
||||||
|
|
||||||
#: .Step+3.Back+to+step+2
|
#: .Step+3.Back+to+step+2
|
||||||
@ -1714,7 +1714,7 @@ msgid "Your poll will automatically be archived"
|
|||||||
msgstr "Η ψηφοφορία σας θα αρχειοθετηθεί αυτόματα"
|
msgstr "Η ψηφοφορία σας θα αρχειοθετηθεί αυτόματα"
|
||||||
|
|
||||||
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
||||||
msgid "Your poll will be automatically archived in %d days."
|
msgid "Your poll will be automatically archived in %d dateList."
|
||||||
msgstr "Η ψηφοφορία σας θα αρχειοθετηθεί αυτόματα σε %d ημέρες."
|
msgstr "Η ψηφοφορία σας θα αρχειοθετηθεί αυτόματα σε %d ημέρες."
|
||||||
|
|
||||||
#: .Step+3.after+the+last+date+of+your+poll.
|
#: .Step+3.after+the+last+date+of+your+poll.
|
||||||
|
@ -84,10 +84,10 @@ msgstr ""
|
|||||||
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
||||||
#: +it+is+developed+by+the+Framasoft+association.
|
#: +it+is+developed+by+the+Framasoft+association.
|
||||||
msgid ""
|
msgid ""
|
||||||
"software developed by the University of Strasbourg. These days, it is "
|
"software developed by the University of Strasbourg. These dateList, it is "
|
||||||
"developed by the Framasoft association."
|
"developed by the Framasoft association."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"software developed by the University of Strasbourg. These days, it is "
|
"software developed by the University of Strasbourg. These dateList, it is "
|
||||||
"developed by the Framasoft association."
|
"developed by the Framasoft association."
|
||||||
|
|
||||||
#: .3rd+section.Grow+your+own
|
#: .3rd+section.Grow+your+own
|
||||||
@ -931,8 +931,8 @@ msgid "Your name"
|
|||||||
msgstr "Your name"
|
msgstr "Your name"
|
||||||
|
|
||||||
#: .Generic.days
|
#: .Generic.days
|
||||||
msgid "days"
|
msgid "dateList"
|
||||||
msgstr "days"
|
msgstr "dateList"
|
||||||
|
|
||||||
#: .Generic.for
|
#: .Generic.for
|
||||||
msgid "for"
|
msgid "for"
|
||||||
@ -1635,8 +1635,8 @@ msgid "Remove a time slot"
|
|||||||
msgstr "Remove a time slot"
|
msgstr "Remove a time slot"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+days
|
#: .Step+2+date.Remove+all+days
|
||||||
msgid "Remove all days"
|
msgid "Remove all dateList"
|
||||||
msgstr "Remove all days"
|
msgstr "Remove all dateList"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+times
|
#: .Step+2+date.Remove+all+times
|
||||||
msgid "Remove all times"
|
msgid "Remove all times"
|
||||||
@ -1650,14 +1650,14 @@ msgstr "Remove this day"
|
|||||||
#: +two+time+slots+on+one+day+or+two+days).
|
#: +two+time+slots+on+one+day+or+two+days).
|
||||||
msgid ""
|
msgid ""
|
||||||
"To schedule an event you need to provide at least two choices (e.g., two "
|
"To schedule an event you need to provide at least two choices (e.g., two "
|
||||||
"time slots on one day or two days)."
|
"time slots on one day or two dateList)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"To schedule an event you need to provide at least two choices (e.g., two "
|
"To schedule an event you need to provide at least two choices (e.g., two "
|
||||||
"time slots on one day or two days)."
|
"time slots on one day or two dateList)."
|
||||||
|
|
||||||
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
||||||
msgid "You can add or remove additional days and times with the buttons"
|
msgid "You can add or remove additional dateList and times with the buttons"
|
||||||
msgstr "You can add or remove additional days and times with the buttons"
|
msgstr "You can add or remove additional dateList and times with the buttons"
|
||||||
|
|
||||||
#: .Step+3.Back+to+step+2
|
#: .Step+3.Back+to+step+2
|
||||||
msgid "Back to step 2"
|
msgid "Back to step 2"
|
||||||
@ -1712,8 +1712,8 @@ msgid "Your poll will automatically be archived"
|
|||||||
msgstr "Your poll will automatically be archived"
|
msgstr "Your poll will automatically be archived"
|
||||||
|
|
||||||
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
||||||
msgid "Your poll will be automatically archived in %d days."
|
msgid "Your poll will be automatically archived in %d dateList."
|
||||||
msgstr "Your poll will be automatically archived in %d days."
|
msgstr "Your poll will be automatically archived in %d dateList."
|
||||||
|
|
||||||
#: .Step+3.after+the+last+date+of+your+poll.
|
#: .Step+3.after+the+last+date+of+your+poll.
|
||||||
msgid "after the last date of your poll."
|
msgid "after the last date of your poll."
|
||||||
|
@ -88,7 +88,7 @@ msgstr ""
|
|||||||
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
||||||
#: +it+is+developed+by+the+Framasoft+association.
|
#: +it+is+developed+by+the+Framasoft+association.
|
||||||
msgid ""
|
msgid ""
|
||||||
"software developed by the University of Strasbourg. These days, it is "
|
"software developed by the University of Strasbourg. These dateList, it is "
|
||||||
"developed by the Framasoft association."
|
"developed by the Framasoft association."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"un software desarrollado por la Universidad de Estrasburgo. Ahora, su "
|
"un software desarrollado por la Universidad de Estrasburgo. Ahora, su "
|
||||||
@ -945,7 +945,7 @@ msgid "Your name"
|
|||||||
msgstr "Su nombre"
|
msgstr "Su nombre"
|
||||||
|
|
||||||
#: .Generic.days
|
#: .Generic.days
|
||||||
msgid "days"
|
msgid "dateList"
|
||||||
msgstr "días"
|
msgstr "días"
|
||||||
|
|
||||||
#: .Generic.for
|
#: .Generic.for
|
||||||
@ -1664,7 +1664,7 @@ msgid "Remove a time slot"
|
|||||||
msgstr "Eliminar una franja horaria"
|
msgstr "Eliminar una franja horaria"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+days
|
#: .Step+2+date.Remove+all+days
|
||||||
msgid "Remove all days"
|
msgid "Remove all dateList"
|
||||||
msgstr "Borrar todos los días"
|
msgstr "Borrar todos los días"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+times
|
#: .Step+2+date.Remove+all+times
|
||||||
@ -1679,13 +1679,13 @@ msgstr "Eliminar este dia"
|
|||||||
#: +two+time+slots+on+one+day+or+two+days).
|
#: +two+time+slots+on+one+day+or+two+days).
|
||||||
msgid ""
|
msgid ""
|
||||||
"To schedule an event you need to provide at least two choices (e.g., two "
|
"To schedule an event you need to provide at least two choices (e.g., two "
|
||||||
"time slots on one day or two days)."
|
"time slots on one day or two dateList)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Para programar un evento, tiene que proponer por lo menos dos opciones (dos "
|
"Para programar un evento, tiene que proponer por lo menos dos opciones (dos "
|
||||||
"horarios para un día, o dos días)."
|
"horarios para un día, o dos días)."
|
||||||
|
|
||||||
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
||||||
msgid "You can add or remove additional days and times with the buttons"
|
msgid "You can add or remove additional dateList and times with the buttons"
|
||||||
msgstr "Puede agregar o borrar días y horarios con los botones"
|
msgstr "Puede agregar o borrar días y horarios con los botones"
|
||||||
|
|
||||||
#: .Step+3.Back+to+step+2
|
#: .Step+3.Back+to+step+2
|
||||||
@ -1741,7 +1741,7 @@ msgid "Your poll will automatically be archived"
|
|||||||
msgstr "Su encuesta estará archivada de manera automática"
|
msgstr "Su encuesta estará archivada de manera automática"
|
||||||
|
|
||||||
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
||||||
msgid "Your poll will be automatically archived in %d days."
|
msgid "Your poll will be automatically archived in %d dateList."
|
||||||
msgstr "Su encuesta estará archivada de manera automática en %d días."
|
msgstr "Su encuesta estará archivada de manera automática en %d días."
|
||||||
|
|
||||||
#: .Step+3.after+the+last+date+of+your+poll.
|
#: .Step+3.after+the+last+date+of+your+poll.
|
||||||
|
@ -87,7 +87,7 @@ msgstr ""
|
|||||||
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
||||||
#: +it+is+developed+by+the+Framasoft+association.
|
#: +it+is+developed+by+the+Framasoft+association.
|
||||||
msgid ""
|
msgid ""
|
||||||
"software developed by the University of Strasbourg. These days, it is "
|
"software developed by the University of Strasbourg. These dateList, it is "
|
||||||
"developed by the Framasoft association."
|
"developed by the Framasoft association."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"un logiciel développé par l'Université de Strasbourg. Aujourd'hui, son "
|
"un logiciel développé par l'Université de Strasbourg. Aujourd'hui, son "
|
||||||
@ -949,7 +949,7 @@ msgid "Your name"
|
|||||||
msgstr "Votre nom"
|
msgstr "Votre nom"
|
||||||
|
|
||||||
#: .Generic.days
|
#: .Generic.days
|
||||||
msgid "days"
|
msgid "dateList"
|
||||||
msgstr "jours"
|
msgstr "jours"
|
||||||
|
|
||||||
#: .Generic.for
|
#: .Generic.for
|
||||||
@ -1675,7 +1675,7 @@ msgid "Remove a time slot"
|
|||||||
msgstr "Supprimer le dernier horaire"
|
msgstr "Supprimer le dernier horaire"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+days
|
#: .Step+2+date.Remove+all+days
|
||||||
msgid "Remove all days"
|
msgid "Remove all dateList"
|
||||||
msgstr "Effacer tous les jours"
|
msgstr "Effacer tous les jours"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+times
|
#: .Step+2+date.Remove+all+times
|
||||||
@ -1690,13 +1690,13 @@ msgstr "Supprimer ce jour"
|
|||||||
#: +two+time+slots+on+one+day+or+two+days).
|
#: +two+time+slots+on+one+day+or+two+days).
|
||||||
msgid ""
|
msgid ""
|
||||||
"To schedule an event you need to provide at least two choices (e.g., two "
|
"To schedule an event you need to provide at least two choices (e.g., two "
|
||||||
"time slots on one day or two days)."
|
"time slots on one day or two dateList)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Pour créer un sondage spécial dates vous devez proposer au moins deux choix "
|
"Pour créer un sondage spécial dates vous devez proposer au moins deux choix "
|
||||||
"(deux horaires pour une même journée ou deux jours)."
|
"(deux horaires pour une même journée ou deux jours)."
|
||||||
|
|
||||||
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
||||||
msgid "You can add or remove additional days and times with the buttons"
|
msgid "You can add or remove additional dateList and times with the buttons"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Vous pouvez ajouter ou supprimer des jours et horaires supplémentaires avec "
|
"Vous pouvez ajouter ou supprimer des jours et horaires supplémentaires avec "
|
||||||
"les boutons"
|
"les boutons"
|
||||||
@ -1754,7 +1754,7 @@ msgid "Your poll will automatically be archived"
|
|||||||
msgstr "Votre sondage sera automatiquement archivé"
|
msgstr "Votre sondage sera automatiquement archivé"
|
||||||
|
|
||||||
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
||||||
msgid "Your poll will be automatically archived in %d days."
|
msgid "Your poll will be automatically archived in %d dateList."
|
||||||
msgstr "Votre sondage sera automatiquement archivé dans %d jours."
|
msgstr "Votre sondage sera automatiquement archivé dans %d jours."
|
||||||
|
|
||||||
#: .Step+3.after+the+last+date+of+your+poll.
|
#: .Step+3.after+the+last+date+of+your+poll.
|
||||||
|
@ -75,7 +75,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days,+it+is+developed+by+the+Framasoft+association.
|
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days,+it+is+developed+by+the+Framasoft+association.
|
||||||
msgid ""
|
msgid ""
|
||||||
"software developed by the University of Strasbourg. These days, it is "
|
"software developed by the University of Strasbourg. These dateList, it is "
|
||||||
"developed by the Framasoft association."
|
"developed by the Framasoft association."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -861,7 +861,7 @@ msgid "Your name"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: .Generic.days
|
#: .Generic.days
|
||||||
msgid "days"
|
msgid "dateList"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: .Generic.for
|
#: .Generic.for
|
||||||
@ -1538,7 +1538,7 @@ msgid "Remove a time slot"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+days
|
#: .Step+2+date.Remove+all+days
|
||||||
msgid "Remove all days"
|
msgid "Remove all dateList"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+times
|
#: .Step+2+date.Remove+all+times
|
||||||
@ -1552,11 +1552,11 @@ msgstr ""
|
|||||||
#: .Step+2+date.To+schedule+an+event+you+need+to+provide+at+least+two+choices+(e.g.,+two+time+slots+on+one+day+or+two+days).
|
#: .Step+2+date.To+schedule+an+event+you+need+to+provide+at+least+two+choices+(e.g.,+two+time+slots+on+one+day+or+two+days).
|
||||||
msgid ""
|
msgid ""
|
||||||
"To schedule an event you need to provide at least two choices (e.g., two "
|
"To schedule an event you need to provide at least two choices (e.g., two "
|
||||||
"time slots on one day or two days)."
|
"time slots on one day or two dateList)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
||||||
msgid "You can add or remove additional days and times with the buttons"
|
msgid "You can add or remove additional dateList and times with the buttons"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: .Step+3.Back+to+step+2
|
#: .Step+3.Back+to+step+2
|
||||||
@ -1605,7 +1605,7 @@ msgid "Your poll will automatically be archived"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
||||||
msgid "Your poll will be automatically archived in %d days."
|
msgid "Your poll will be automatically archived in %d dateList."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: .Step+3.after+the+last+date+of+your+poll.
|
#: .Step+3.after+the+last+date+of+your+poll.
|
||||||
|
@ -81,7 +81,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days,+it+is+developed+by+the+Framasoft+association.
|
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days,+it+is+developed+by+the+Framasoft+association.
|
||||||
msgid ""
|
msgid ""
|
||||||
"software developed by the University of Strasbourg. These days, it is "
|
"software developed by the University of Strasbourg. These dateList, it is "
|
||||||
"developed by the Framasoft association."
|
"developed by the Framasoft association."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"un software desenvolvido pola Universidade de Estrasburgo. Agora, o seu "
|
"un software desenvolvido pola Universidade de Estrasburgo. Agora, o seu "
|
||||||
@ -918,7 +918,7 @@ msgid "Your name"
|
|||||||
msgstr "Seu nome"
|
msgstr "Seu nome"
|
||||||
|
|
||||||
#: .Generic.days
|
#: .Generic.days
|
||||||
msgid "days"
|
msgid "dateList"
|
||||||
msgstr "días"
|
msgstr "días"
|
||||||
|
|
||||||
#: .Generic.for
|
#: .Generic.for
|
||||||
@ -1618,7 +1618,7 @@ msgid "Remove a time slot"
|
|||||||
msgstr "Borrar unha hora"
|
msgstr "Borrar unha hora"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+days
|
#: .Step+2+date.Remove+all+days
|
||||||
msgid "Remove all days"
|
msgid "Remove all dateList"
|
||||||
msgstr "Borrar todos os días"
|
msgstr "Borrar todos os días"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+times
|
#: .Step+2+date.Remove+all+times
|
||||||
@ -1632,13 +1632,13 @@ msgstr "Borrar este día"
|
|||||||
#: .Step+2+date.To+schedule+an+event+you+need+to+provide+at+least+two+choices+(e.g.,+two+time+slots+on+one+day+or+two+days).
|
#: .Step+2+date.To+schedule+an+event+you+need+to+provide+at+least+two+choices+(e.g.,+two+time+slots+on+one+day+or+two+days).
|
||||||
msgid ""
|
msgid ""
|
||||||
"To schedule an event you need to provide at least two choices (e.g., two "
|
"To schedule an event you need to provide at least two choices (e.g., two "
|
||||||
"time slots on one day or two days)."
|
"time slots on one day or two dateList)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Para programar unha enquisa, precisa fornecer polo menos dúas opcións (por "
|
"Para programar unha enquisa, precisa fornecer polo menos dúas opcións (por "
|
||||||
"exemplo, dúas horas nun día ou dous días)."
|
"exemplo, dúas horas nun día ou dous días)."
|
||||||
|
|
||||||
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
||||||
msgid "You can add or remove additional days and times with the buttons"
|
msgid "You can add or remove additional dateList and times with the buttons"
|
||||||
msgstr "Cos botóns pode engadir ou borrar días e horas adicionais"
|
msgstr "Cos botóns pode engadir ou borrar días e horas adicionais"
|
||||||
|
|
||||||
#: .Step+3.Back+to+step+2
|
#: .Step+3.Back+to+step+2
|
||||||
@ -1692,7 +1692,7 @@ msgid "Your poll will automatically be archived"
|
|||||||
msgstr "A súa enquisa será arquivada de xeito automático"
|
msgstr "A súa enquisa será arquivada de xeito automático"
|
||||||
|
|
||||||
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
||||||
msgid "Your poll will be automatically archived in %d days."
|
msgid "Your poll will be automatically archived in %d dateList."
|
||||||
msgstr "A súa enquisa será arquivada de xeito automático en %d días."
|
msgstr "A súa enquisa será arquivada de xeito automático en %d días."
|
||||||
|
|
||||||
#: .Step+3.after+the+last+date+of+your+poll.
|
#: .Step+3.after+the+last+date+of+your+poll.
|
||||||
|
@ -83,7 +83,7 @@ msgstr ""
|
|||||||
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
||||||
#: +it+is+developed+by+the+Framasoft+association.
|
#: +it+is+developed+by+the+Framasoft+association.
|
||||||
msgid ""
|
msgid ""
|
||||||
"software developed by the University of Strasbourg. These days, it is "
|
"software developed by the University of Strasbourg. These dateList, it is "
|
||||||
"developed by the Framasoft association."
|
"developed by the Framasoft association."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"szoftveren alapul, melyet a Strasbourg-i Egyetem fejlesztett. Manapság a "
|
"szoftveren alapul, melyet a Strasbourg-i Egyetem fejlesztett. Manapság a "
|
||||||
@ -926,7 +926,7 @@ msgid "Your name"
|
|||||||
msgstr "Neve"
|
msgstr "Neve"
|
||||||
|
|
||||||
#: .Generic.days
|
#: .Generic.days
|
||||||
msgid "days"
|
msgid "dateList"
|
||||||
msgstr "nap"
|
msgstr "nap"
|
||||||
|
|
||||||
#: .Generic.for
|
#: .Generic.for
|
||||||
@ -1636,7 +1636,7 @@ msgid "Remove a time slot"
|
|||||||
msgstr "Idősáv eltávolítása"
|
msgstr "Idősáv eltávolítása"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+days
|
#: .Step+2+date.Remove+all+days
|
||||||
msgid "Remove all days"
|
msgid "Remove all dateList"
|
||||||
msgstr "Összes nap eltávolítása"
|
msgstr "Összes nap eltávolítása"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+times
|
#: .Step+2+date.Remove+all+times
|
||||||
@ -1651,13 +1651,13 @@ msgstr "Nap eltávolítása"
|
|||||||
#: +two+time+slots+on+one+day+or+two+days).
|
#: +two+time+slots+on+one+day+or+two+days).
|
||||||
msgid ""
|
msgid ""
|
||||||
"To schedule an event you need to provide at least two choices (e.g., two "
|
"To schedule an event you need to provide at least two choices (e.g., two "
|
||||||
"time slots on one day or two days)."
|
"time slots on one day or two dateList)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Egy esemény ütemezéséhez legalább két lehetőséget kell megadni (azaz két "
|
"Egy esemény ütemezéséhez legalább két lehetőséget kell megadni (azaz két "
|
||||||
"idősávot egy nap, vagy két napot)."
|
"idősávot egy nap, vagy két napot)."
|
||||||
|
|
||||||
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
||||||
msgid "You can add or remove additional days and times with the buttons"
|
msgid "You can add or remove additional dateList and times with the buttons"
|
||||||
msgstr "A gombokkal további napokat és idősávokat adhat hozzá"
|
msgstr "A gombokkal további napokat és idősávokat adhat hozzá"
|
||||||
|
|
||||||
#: .Step+3.Back+to+step+2
|
#: .Step+3.Back+to+step+2
|
||||||
@ -1713,7 +1713,7 @@ msgid "Your poll will automatically be archived"
|
|||||||
msgstr "A szavazása automatikusan archiválva lesz"
|
msgstr "A szavazása automatikusan archiválva lesz"
|
||||||
|
|
||||||
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
||||||
msgid "Your poll will be automatically archived in %d days."
|
msgid "Your poll will be automatically archived in %d dateList."
|
||||||
msgstr "A szavazása %d nap után automatikusan archiválva lesz."
|
msgstr "A szavazása %d nap után automatikusan archiválva lesz."
|
||||||
|
|
||||||
#: .Step+3.after+the+last+date+of+your+poll.
|
#: .Step+3.after+the+last+date+of+your+poll.
|
||||||
|
@ -87,7 +87,7 @@ msgstr ""
|
|||||||
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
||||||
#: +it+is+developed+by+the+Framasoft+association.
|
#: +it+is+developed+by+the+Framasoft+association.
|
||||||
msgid ""
|
msgid ""
|
||||||
"software developed by the University of Strasbourg. These days, it is "
|
"software developed by the University of Strasbourg. These dateList, it is "
|
||||||
"developed by the Framasoft association."
|
"developed by the Framasoft association."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"un software sviluppato dall'Università di Strasburgo. Oggi il suo sviluppo è "
|
"un software sviluppato dall'Università di Strasburgo. Oggi il suo sviluppo è "
|
||||||
@ -941,7 +941,7 @@ msgid "Your name"
|
|||||||
msgstr "Il tuo nome"
|
msgstr "Il tuo nome"
|
||||||
|
|
||||||
#: .Generic.days
|
#: .Generic.days
|
||||||
msgid "days"
|
msgid "dateList"
|
||||||
msgstr "giorni"
|
msgstr "giorni"
|
||||||
|
|
||||||
#: .Generic.for
|
#: .Generic.for
|
||||||
@ -1653,7 +1653,7 @@ msgid "Remove a time slot"
|
|||||||
msgstr "Eliminare l'ultimo orario"
|
msgstr "Eliminare l'ultimo orario"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+days
|
#: .Step+2+date.Remove+all+days
|
||||||
msgid "Remove all days"
|
msgid "Remove all dateList"
|
||||||
msgstr "Cancellare tutti i giorni"
|
msgstr "Cancellare tutti i giorni"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+times
|
#: .Step+2+date.Remove+all+times
|
||||||
@ -1668,13 +1668,13 @@ msgstr "Eliminare questo giorno"
|
|||||||
#: +two+time+slots+on+one+day+or+two+days).
|
#: +two+time+slots+on+one+day+or+two+days).
|
||||||
msgid ""
|
msgid ""
|
||||||
"To schedule an event you need to provide at least two choices (e.g., two "
|
"To schedule an event you need to provide at least two choices (e.g., two "
|
||||||
"time slots on one day or two days)."
|
"time slots on one day or two dateList)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Per creare un evento, è meglio proporre almeno 2 scelte (2 orari per lo "
|
"Per creare un evento, è meglio proporre almeno 2 scelte (2 orari per lo "
|
||||||
"stesso giorno o 2 giorni)."
|
"stesso giorno o 2 giorni)."
|
||||||
|
|
||||||
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
||||||
msgid "You can add or remove additional days and times with the buttons"
|
msgid "You can add or remove additional dateList and times with the buttons"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Puoi aggiungere o eliminare dei giorni et orari ulteriori con i pulsanti"
|
"Puoi aggiungere o eliminare dei giorni et orari ulteriori con i pulsanti"
|
||||||
|
|
||||||
@ -1731,7 +1731,7 @@ msgid "Your poll will automatically be archived"
|
|||||||
msgstr "Il tuo sondaggio sarà archiviato automaticamente"
|
msgstr "Il tuo sondaggio sarà archiviato automaticamente"
|
||||||
|
|
||||||
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
||||||
msgid "Your poll will be automatically archived in %d days."
|
msgid "Your poll will be automatically archived in %d dateList."
|
||||||
msgstr "Il tuo sondaggio verrà archiviata automaticamente in %d giorni."
|
msgstr "Il tuo sondaggio verrà archiviata automaticamente in %d giorni."
|
||||||
|
|
||||||
#: .Step+3.after+the+last+date+of+your+poll.
|
#: .Step+3.after+the+last+date+of+your+poll.
|
||||||
|
@ -82,7 +82,7 @@ msgstr ""
|
|||||||
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
||||||
#: +it+is+developed+by+the+Framasoft+association.
|
#: +it+is+developed+by+the+Framasoft+association.
|
||||||
msgid ""
|
msgid ""
|
||||||
"software developed by the University of Strasbourg. These days, it is "
|
"software developed by the University of Strasbourg. These dateList, it is "
|
||||||
"developed by the Framasoft association."
|
"developed by the Framasoft association."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"software ontwikkeld door de Universiteit van Straatsburg. Het wordt "
|
"software ontwikkeld door de Universiteit van Straatsburg. Het wordt "
|
||||||
@ -922,7 +922,7 @@ msgid "Your name"
|
|||||||
msgstr "Je naam"
|
msgstr "Je naam"
|
||||||
|
|
||||||
#: .Generic.days
|
#: .Generic.days
|
||||||
msgid "days"
|
msgid "dateList"
|
||||||
msgstr "dagen"
|
msgstr "dagen"
|
||||||
|
|
||||||
#: .Generic.for
|
#: .Generic.for
|
||||||
@ -1628,7 +1628,7 @@ msgid "Remove a time slot"
|
|||||||
msgstr "Verwijder een tijd"
|
msgstr "Verwijder een tijd"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+days
|
#: .Step+2+date.Remove+all+days
|
||||||
msgid "Remove all days"
|
msgid "Remove all dateList"
|
||||||
msgstr "Verwijder alle dagen"
|
msgstr "Verwijder alle dagen"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+times
|
#: .Step+2+date.Remove+all+times
|
||||||
@ -1643,13 +1643,13 @@ msgstr "Verwijder deze dag"
|
|||||||
#: +two+time+slots+on+one+day+or+two+days).
|
#: +two+time+slots+on+one+day+or+two+days).
|
||||||
msgid ""
|
msgid ""
|
||||||
"To schedule an event you need to provide at least two choices (e.g., two "
|
"To schedule an event you need to provide at least two choices (e.g., two "
|
||||||
"time slots on one day or two days)."
|
"time slots on one day or two dateList)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Om een datum te prikken, moet je tenminste twee keuzes geven. (Bijvoorbeeld "
|
"Om een datum te prikken, moet je tenminste twee keuzes geven. (Bijvoorbeeld "
|
||||||
"twee tijden op één dag of twee verschillende dagen)."
|
"twee tijden op één dag of twee verschillende dagen)."
|
||||||
|
|
||||||
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
||||||
msgid "You can add or remove additional days and times with the buttons"
|
msgid "You can add or remove additional dateList and times with the buttons"
|
||||||
msgstr "Je kan extra dagen of tijden toevoegen en verwijderen met deze knoppen"
|
msgstr "Je kan extra dagen of tijden toevoegen en verwijderen met deze knoppen"
|
||||||
|
|
||||||
#: .Step+3.Back+to+step+2
|
#: .Step+3.Back+to+step+2
|
||||||
@ -1704,7 +1704,7 @@ msgid "Your poll will automatically be archived"
|
|||||||
msgstr "Je poll wordt automatisch gearchiveerd"
|
msgstr "Je poll wordt automatisch gearchiveerd"
|
||||||
|
|
||||||
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
||||||
msgid "Your poll will be automatically archived in %d days."
|
msgid "Your poll will be automatically archived in %d dateList."
|
||||||
msgstr "Je poll wordt over %d dagen automatisch gearchiveerd."
|
msgstr "Je poll wordt over %d dagen automatisch gearchiveerd."
|
||||||
|
|
||||||
#: .Step+3.after+the+last+date+of+your+poll.
|
#: .Step+3.after+the+last+date+of+your+poll.
|
||||||
|
@ -87,7 +87,7 @@ msgstr ""
|
|||||||
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days
|
||||||
#: +it+is+developed+by+the+Framasoft+association.
|
#: +it+is+developed+by+the+Framasoft+association.
|
||||||
msgid ""
|
msgid ""
|
||||||
"software developed by the University of Strasbourg. These days, it is "
|
"software developed by the University of Strasbourg. These dateList, it is "
|
||||||
"developed by the Framasoft association."
|
"developed by the Framasoft association."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"un logicial desvolopat per l’Universitat d’Estrasborg. Uèi son desvolopament "
|
"un logicial desvolopat per l’Universitat d’Estrasborg. Uèi son desvolopament "
|
||||||
@ -942,7 +942,7 @@ msgid "Your name"
|
|||||||
msgstr "Vòstre nom"
|
msgstr "Vòstre nom"
|
||||||
|
|
||||||
#: .Generic.days
|
#: .Generic.days
|
||||||
msgid "days"
|
msgid "dateList"
|
||||||
msgstr "jorns"
|
msgstr "jorns"
|
||||||
|
|
||||||
#: .Generic.for
|
#: .Generic.for
|
||||||
@ -1660,7 +1660,7 @@ msgid "Remove a time slot"
|
|||||||
msgstr "Suprimir lo darrièr orari"
|
msgstr "Suprimir lo darrièr orari"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+days
|
#: .Step+2+date.Remove+all+days
|
||||||
msgid "Remove all days"
|
msgid "Remove all dateList"
|
||||||
msgstr "Suprimir totes los jorns"
|
msgstr "Suprimir totes los jorns"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+times
|
#: .Step+2+date.Remove+all+times
|
||||||
@ -1675,13 +1675,13 @@ msgstr "Suprimir aqueste jorn"
|
|||||||
#: +two+time+slots+on+one+day+or+two+days).
|
#: +two+time+slots+on+one+day+or+two+days).
|
||||||
msgid ""
|
msgid ""
|
||||||
"To schedule an event you need to provide at least two choices (e.g., two "
|
"To schedule an event you need to provide at least two choices (e.g., two "
|
||||||
"time slots on one day or two days)."
|
"time slots on one day or two dateList)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Per crear un sondatge especial datas vos cal prepausar almens doas causidas "
|
"Per crear un sondatge especial datas vos cal prepausar almens doas causidas "
|
||||||
"(dos oraris per la meteissa jornada o dos jorns)."
|
"(dos oraris per la meteissa jornada o dos jorns)."
|
||||||
|
|
||||||
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
||||||
msgid "You can add or remove additional days and times with the buttons"
|
msgid "You can add or remove additional dateList and times with the buttons"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Podètz apondre o suprimir de jorns e oraris suplementaris amb los botons"
|
"Podètz apondre o suprimir de jorns e oraris suplementaris amb los botons"
|
||||||
|
|
||||||
@ -1738,7 +1738,7 @@ msgid "Your poll will automatically be archived"
|
|||||||
msgstr "Vòstre sondatge serà archivat automaticament"
|
msgstr "Vòstre sondatge serà archivat automaticament"
|
||||||
|
|
||||||
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
||||||
msgid "Your poll will be automatically archived in %d days."
|
msgid "Your poll will be automatically archived in %d dateList."
|
||||||
msgstr "Vòstre sondatge serà archivat automaticament dins %d jorns."
|
msgstr "Vòstre sondatge serà archivat automaticament dins %d jorns."
|
||||||
|
|
||||||
#: .Step+3.after+the+last+date+of+your+poll.
|
#: .Step+3.after+the+last+date+of+your+poll.
|
||||||
|
@ -81,7 +81,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days,+it+is+developed+by+the+Framasoft+association.
|
#: .2nd+section.software+developed+by+the+University+of+Strasbourg.+These+days,+it+is+developed+by+the+Framasoft+association.
|
||||||
msgid ""
|
msgid ""
|
||||||
"software developed by the University of Strasbourg. These days, it is "
|
"software developed by the University of Strasbourg. These dateList, it is "
|
||||||
"developed by the Framasoft association."
|
"developed by the Framasoft association."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"mjukvara utvecklad av Strasbourgs universitet. Idag utvecklas den av "
|
"mjukvara utvecklad av Strasbourgs universitet. Idag utvecklas den av "
|
||||||
@ -917,7 +917,7 @@ msgid "Your name"
|
|||||||
msgstr "Ditt namn"
|
msgstr "Ditt namn"
|
||||||
|
|
||||||
#: .Generic.days
|
#: .Generic.days
|
||||||
msgid "days"
|
msgid "dateList"
|
||||||
msgstr "dagar"
|
msgstr "dagar"
|
||||||
|
|
||||||
#: .Generic.for
|
#: .Generic.for
|
||||||
@ -1607,7 +1607,7 @@ msgid "Remove a time slot"
|
|||||||
msgstr "Ta bort en tid"
|
msgstr "Ta bort en tid"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+days
|
#: .Step+2+date.Remove+all+days
|
||||||
msgid "Remove all days"
|
msgid "Remove all dateList"
|
||||||
msgstr "Ta bort alla dagar"
|
msgstr "Ta bort alla dagar"
|
||||||
|
|
||||||
#: .Step+2+date.Remove+all+times
|
#: .Step+2+date.Remove+all+times
|
||||||
@ -1621,13 +1621,13 @@ msgstr "Ta bort den här dagen"
|
|||||||
#: .Step+2+date.To+schedule+an+event+you+need+to+provide+at+least+two+choices+(e.g.,+two+time+slots+on+one+day+or+two+days).
|
#: .Step+2+date.To+schedule+an+event+you+need+to+provide+at+least+two+choices+(e.g.,+two+time+slots+on+one+day+or+two+days).
|
||||||
msgid ""
|
msgid ""
|
||||||
"To schedule an event you need to provide at least two choices (e.g., two "
|
"To schedule an event you need to provide at least two choices (e.g., two "
|
||||||
"time slots on one day or two days)."
|
"time slots on one day or two dateList)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"För att schemalägga ett evenemang måste du ange minst två val (alltså minst "
|
"För att schemalägga ett evenemang måste du ange minst två val (alltså minst "
|
||||||
"två tider samma dag eller två dagar)."
|
"två tider samma dag eller två dagar)."
|
||||||
|
|
||||||
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
#: .Step+2+date.You+can+add+or+remove+additional+days+and+times+with+the+buttons
|
||||||
msgid "You can add or remove additional days and times with the buttons"
|
msgid "You can add or remove additional dateList and times with the buttons"
|
||||||
msgstr "Du kan lägga till och ta bort dagar och tider med knapparna"
|
msgstr "Du kan lägga till och ta bort dagar och tider med knapparna"
|
||||||
|
|
||||||
#: .Step+3.Back+to+step+2
|
#: .Step+3.Back+to+step+2
|
||||||
@ -1680,7 +1680,7 @@ msgid "Your poll will automatically be archived"
|
|||||||
msgstr "Din undersökning kommer arkiveras automatiskt"
|
msgstr "Din undersökning kommer arkiveras automatiskt"
|
||||||
|
|
||||||
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
#: .Step+3.Your+poll+will+be+automatically+archived+in+%25d+days.
|
||||||
msgid "Your poll will be automatically archived in %d days."
|
msgid "Your poll will be automatically archived in %d dateList."
|
||||||
msgstr "Din undersökning kommer arkiveras automatiskt om %d dagar."
|
msgstr "Din undersökning kommer arkiveras automatiskt om %d dagar."
|
||||||
|
|
||||||
#: .Step+3.after+the+last+date+of+your+poll.
|
#: .Step+3.after+the+last+date+of+your+poll.
|
||||||
|
@ -17,6 +17,7 @@ export const environment = {
|
|||||||
showDemoWarning: true,
|
showDemoWarning: true,
|
||||||
autofill: false,
|
autofill: false,
|
||||||
autoSendNewPoll: false,
|
autoSendNewPoll: false,
|
||||||
|
interval_days_default: 7,
|
||||||
appTitle: 'FramaDate Funky',
|
appTitle: 'FramaDate Funky',
|
||||||
appVersion: '2.1.0',
|
appVersion: '2.1.0',
|
||||||
appLogo: 'assets/img/logo.png',
|
appLogo: 'assets/img/logo.png',
|
||||||
|
@ -24,6 +24,7 @@ export const environment = {
|
|||||||
autofill: true,
|
autofill: true,
|
||||||
showDemoWarning: false,
|
showDemoWarning: false,
|
||||||
autoSendNewPoll: false,
|
autoSendNewPoll: false,
|
||||||
|
interval_days_default: 7,
|
||||||
appTitle: 'FramaDate Funky',
|
appTitle: 'FramaDate Funky',
|
||||||
appVersion: '2.1.0',
|
appVersion: '2.1.0',
|
||||||
appLogo: 'assets/img/logo.png',
|
appLogo: 'assets/img/logo.png',
|
||||||
|
12
up_change.sh
Normal file
12
up_change.sh
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
previous_tag=0
|
||||||
|
for current_tag in $(git tag --sort=-creatordate)
|
||||||
|
do
|
||||||
|
if [ "$previous_tag" != 0 ];then
|
||||||
|
tag_date=$(git log -1 --pretty=format:'%ad' --date=short ${previous_tag})
|
||||||
|
printf "## ${previous_tag} (${tag_date})\n\n"
|
||||||
|
git log ${current_tag}...${previous_tag} --pretty=format:'* %s [View](https://bitbucket.org/projects/test/repos/my-project/commits/%H)' --reverse | grep -v Merge
|
||||||
|
printf "\n\n"
|
||||||
|
fi
|
||||||
|
previous_tag=${current_tag}
|
||||||
|
done
|
@ -1,5 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# this script is used on cipherbliss.com to show a demo, customize it to make your own demo
|
# this script is used on cipherbliss.com to show a demo, customize it to make your own demo
|
||||||
|
sh up_change.sh > CHANGELOG.md
|
||||||
|
|
||||||
git pull origin develop
|
git pull origin develop
|
||||||
yarn install --pure-lockfile
|
yarn install --pure-lockfile
|
||||||
|
Loading…
Reference in New Issue
Block a user