From f0e19c8feb530a598d9ef503afd167ab7e349aca Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Tue, 3 Nov 2020 21:34:46 +0100 Subject: [PATCH 01/26] Primer commit --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d5860a1eb4..901ca8dece 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ djangorestframework==3.7.7 django-cors-headers==2.1.0 requests==2.18.4 django-filter==1.1.0 -psycopg2==2.7.4 +psycopg2-binary==2.8.4 django-rest-swagger==2.2.0 coverage==4.5.2 django-nose==1.4.6 From 8ca5c8748279627fe53d70341be9d0d6893d37d3 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Wed, 4 Nov 2020 11:01:57 +0100 Subject: [PATCH 02/26] local_settings subido --- .gitignore | 1 - decide/local_settings.py | 43 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 decide/local_settings.py diff --git a/.gitignore b/.gitignore index b823e313b4..cc0877af2f 100644 --- a/.gitignore +++ b/.gitignore @@ -52,7 +52,6 @@ coverage.xml # Django stuff: *.log -local_settings.py # Flask stuff: instance/ diff --git a/decide/local_settings.py b/decide/local_settings.py new file mode 100644 index 0000000000..375fc61e9b --- /dev/null +++ b/decide/local_settings.py @@ -0,0 +1,43 @@ +ALLOWED_HOSTS = ["*"] + +# Modules in use, commented modules that you won't use +MODULES = [ + 'authentication', + 'base', + 'booth', + 'census', + 'mixnet', + 'postproc', + 'store', + 'visualizer', + 'voting', +] +BASEURL = 'http://localhost:8000' + +APIS = { + 'authentication': BASEURL , + 'base': BASEURL , + 'booth': BASEURL , + 'census': BASEURL , + 'mixnet': BASEURL , + 'postproc': BASEURL , + 'store': BASEURL , + 'visualizer': BASEURL , + 'voting': BASEURL , +} + + + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql', + 'NAME': 'decidedb', + 'USER': 'decide2', + 'PASSWORD': 'decide', + 'HOST': 'localhost', + 'PORT': '5432', + } +} + +# number of bits for the key, all auths should use the same number of bits +KEYBITS = 256 From 27483fddbc21ff4f17ec6677c2d76dfa1180d748 Mon Sep 17 00:00:00 2001 From: pabfrasan <56022165+pabfrasan@users.noreply.github.com> Date: Wed, 11 Nov 2020 20:46:19 +0100 Subject: [PATCH 03/26] Update .travis.yml --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index b72f88a6e0..0300fc26ec 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,8 +5,8 @@ services: addons: postgresql: "9.4" before_script: - - psql -U postgres -c "create user decide password 'decide'" - - psql -U postgres -c "create database test_decide owner decide" + - psql -U postgres -c "create user decide2 password 'decide'" + - psql -U postgres -c "create database decidedb owner decide" - psql -U postgres -c "ALTER USER decide CREATEDB" language: python python: From 7c48db0aa499a26f6f7a45bd78eb544e443be1fb Mon Sep 17 00:00:00 2001 From: pabfrasan <56022165+pabfrasan@users.noreply.github.com> Date: Wed, 11 Nov 2020 20:48:28 +0100 Subject: [PATCH 04/26] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 0300fc26ec..a9b3f23493 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ addons: postgresql: "9.4" before_script: - psql -U postgres -c "create user decide2 password 'decide'" - - psql -U postgres -c "create database decidedb owner decide" + - psql -U postgres -c "create database decidedb owner decide2" - psql -U postgres -c "ALTER USER decide CREATEDB" language: python python: From 2783fc126cd09f0c5fe5c87e2ba999e8c8eb3721 Mon Sep 17 00:00:00 2001 From: pabfrasan <56022165+pabfrasan@users.noreply.github.com> Date: Wed, 11 Nov 2020 20:56:03 +0100 Subject: [PATCH 05/26] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index a9b3f23493..8676666719 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ addons: before_script: - psql -U postgres -c "create user decide2 password 'decide'" - psql -U postgres -c "create database decidedb owner decide2" - - psql -U postgres -c "ALTER USER decide CREATEDB" + - psql -U postgres -c "ALTER USER decide2 CREATEDB" language: python python: - "3.6" From ad8a86f3e0a8f7acb8dda01c0873e801aa211d22 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 12 Nov 2020 12:51:42 +0100 Subject: [PATCH 06/26] Un cambio en el README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 83d0a57e27..4ac97190d5 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ [![Build Status](https://travis-ci.com/wadobo/decide.svg?branch=master)](https://travis-ci.com/wadobo/decide) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/94a85eaa0e974c71af6899ea3b0d27e0)](https://www.codacy.com/app/Wadobo/decide?utm_source=github.com&utm_medium=referral&utm_content=wadobo/decide&utm_campaign=Badge_Grade) [![Codacy Badge](https://api.codacy.com/project/badge/Coverage/94a85eaa0e974c71af6899ea3b0d27e0)](https://www.codacy.com/app/Wadobo/decide?utm_source=github.com&utm_medium=referral&utm_content=wadobo/decide&utm_campaign=Badge_Coverage) +Prueba: +pabfrasan Plataforma voto electrónico educativa ===================================== From 3b7e21b7d40d79b723831b0c85340b73c4056702 Mon Sep 17 00:00:00 2001 From: abrgarvil Date: Thu, 12 Nov 2020 14:12:50 +0000 Subject: [PATCH 07/26] Un cambio en el README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4ac97190d5..56ed957699 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![Build Status](https://travis-ci.com/wadobo/decide.svg?branch=master)](https://travis-ci.com/wadobo/decide) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/94a85eaa0e974c71af6899ea3b0d27e0)](https://www.codacy.com/app/Wadobo/decide?utm_source=github.com&utm_medium=referral&utm_content=wadobo/decide&utm_campaign=Badge_Grade) [![Codacy Badge](https://api.codacy.com/project/badge/Coverage/94a85eaa0e974c71af6899ea3b0d27e0)](https://www.codacy.com/app/Wadobo/decide?utm_source=github.com&utm_medium=referral&utm_content=wadobo/decide&utm_campaign=Badge_Coverage) Prueba: pabfrasan - +abrgarvil Plataforma voto electrónico educativa ===================================== From 4847ff9d884ed75feecad671a44b8a942ff976d4 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Tue, 24 Nov 2020 12:37:16 +0100 Subject: [PATCH 08/26] Docker actualizado --- docker/Dockerfile | 4 ++-- docker/docker-compose.yml | 4 +++- docker/docker-settings.py | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 032eed28e2..3bb98458b2 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -from python:alpine +from python:3.7-alpine RUN apk add --no-cache git postgresql-dev gcc libc-dev RUN apk add --no-cache gcc g++ make libffi-dev python3-dev build-base @@ -10,7 +10,7 @@ RUN pip install ipython WORKDIR /app -RUN git clone https://github.com/wadobo/decide.git . +RUN git clone https://github.com/pabfrasan/decide . RUN pip install -r requirements.txt WORKDIR /app/decide diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 095583eb02..4689c5ff98 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -4,11 +4,13 @@ services: db: restart: always container_name: decide_db - image: postgres:alpine + image: postgres:10.15-alpine volumes: - db:/var/lib/postgresql/data networks: - decide + environment: + - POSTGRES_PASSWORD=postgres web: restart: always container_name: decide_web diff --git a/docker/docker-settings.py b/docker/docker-settings.py index 01e643d936..49efb3d78f 100644 --- a/docker/docker-settings.py +++ b/docker/docker-settings.py @@ -5,6 +5,7 @@ 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'postgres', 'USER': 'postgres', + 'PASSWORD' : 'postgres', 'HOST': 'db', 'PORT': 5432, } From 2c2960f0066c7ff3e28ab8ec0df16c5c4cf39c09 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 10 Dec 2020 18:04:58 +0100 Subject: [PATCH 09/26] =?UTF-8?q?Heroku:=20a=C3=B1adido=20el=20Procfile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Procfile | 4 ++++ requirements.txt | 2 +- vagrant/.python.yml.swp | Bin 0 -> 12288 bytes vagrant/Vagrantfile | 4 ++-- 4 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 Procfile create mode 100644 vagrant/.python.yml.swp diff --git a/Procfile b/Procfile new file mode 100644 index 0000000000..818fef7fe3 --- /dev/null +++ b/Procfile @@ -0,0 +1,4 @@ +% prepara el repositorio para su despliegue. +release: sh -c 'cd decide && python manage.py migrate' +% especifica el comando para lanzar Decide +web: sh -c 'cd decide && gunicorn decide.wsgi --log-file -' diff --git a/requirements.txt b/requirements.txt index 901ca8dece..1acd8af5d3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ djangorestframework==3.7.7 django-cors-headers==2.1.0 requests==2.18.4 django-filter==1.1.0 -psycopg2-binary==2.8.4 +psycopg2-binary==2.7.4 django-rest-swagger==2.2.0 coverage==4.5.2 django-nose==1.4.6 diff --git a/vagrant/.python.yml.swp b/vagrant/.python.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..9b9c508ee8b80d3e4c83830fd8ee987ec15420db GIT binary patch literal 12288 zcmeI&&uSAv90%~Jh_|ZPi+CDSXivM7+Dn;(f>MeHK?)Ij3X^1-3}k25+1X$~^x&n? zC-4b8`39EWe2PAS&miJAo3+Fu)F=pr@4%N~cYgC{Kev$SwO>4aCU?>;fp%MnC_i-{ zZM4L}V<8ID8|Sn4m$W~vds`Q(j(2Kz?}-}Nz8hFIF~eYdRK+xoa-UAK@g>`Fm;w}7 zR-lT9$rP3Q&Lo6u5!{W+24Tsu0(2;_&$Y|L5=jZ?}Z_iku-| zkW=Is$&dr&CGrqyBlnOs>}&PY_AwDsp0SZun0u-PC z1t>rP3jALIi8gT|R%UGdq&vTet>wJm7QYT_sYZEb&u?#IMqLr?tI7qNSs%*_HO)ou z#fmh(j+j=sLZj>1K9=lOr43rntIywRIklxoq&Jz>a(`hLQSbZD2cIw88dl!*^Wa;5 zbFAm}-Sq{;=4>{UF85kyri?b!=N;HG{??}+4YtU&+#JPNlv=5wi=(QSLPz25{9!Pq Z@r`_nu}#cDw;bV~i?Tn?y%kB4h#&r2)Up5o literal 0 HcmV?d00001 diff --git a/vagrant/Vagrantfile b/vagrant/Vagrantfile index 87c50e7375..54ed0beb3a 100644 --- a/vagrant/Vagrantfile +++ b/vagrant/Vagrantfile @@ -58,8 +58,8 @@ Vagrant.configure("2") do |config| # end config.vm.provider "virtualbox" do |v| - v.memory = 512 - v.cpus = 1 + v.memory = 1024 + v.cpus = 2 end # View the documentation for the provider you are using for more From e5cbb96e7b6826c7d2d6b2e9d053aee50be4eb0f Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 10 Dec 2020 18:14:28 +0100 Subject: [PATCH 10/26] Configuracion Heroku --- decide/.local_settings.py.swp | Bin 0 -> 12288 bytes decide/decide/settings.py | 3 +++ requirements.txt | 2 ++ 3 files changed, 5 insertions(+) create mode 100644 decide/.local_settings.py.swp diff --git a/decide/.local_settings.py.swp b/decide/.local_settings.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..0dc1795c59956186ebb05575a15d16c755cfe7e6 GIT binary patch literal 12288 zcmeI2%}*0S6u=+eKtQ7&jTs?v6RBR-f!m8blv2`OpZ;&hXKoF z0L4D6J-9XvU+w_Z95)cU|AcbdanBnA6Q$5kq-XCXJYM!a-l_soc7ip@mGZ+48L#b} zuqcJe02w%=fj$@=8BXd+g9A6&)hnel&ZpsIfDDiUGC&5%02v?yWPl8uX9KF%1urmx z3nqynQ+Ku1rb!hUAOmE843GgbKnBPF86X2>fDDiUGH?zJI37SxFTi(1|Nr0m{l9k! z;3x7Cd5^q7ULo6vkE|eb$TSi|ZXnl@Km7o|kzdGHDGgaYilkdcs69mkOR7Emb5mDf=Nb*KhI#u2_ z6W|#zEX_~-&05G87OhEUjgO6vSTWFjx>)z~#YTVQo#u*=3WMF&f?X^wcX|0%C`#-tK;-r21; zP^*h_XQb*s3Ax@!+ahHi%1CzhyF#eSG2M%~X`4Jv%VcL-&74{dor(G0w*MI9@~Kj` zaZoFGqjSQG0xp>!>iZgFWl^nSy4+(`6HygMu^kbyZA@S3Q2=%}n_o(&*7W7n3RVVg H53IsJZzU5> literal 0 HcmV?d00001 diff --git a/decide/decide/settings.py b/decide/decide/settings.py index 1d22b67324..ae563c3dcf 100644 --- a/decide/decide/settings.py +++ b/decide/decide/settings.py @@ -180,3 +180,6 @@ INSTALLED_APPS = INSTALLED_APPS + MODULES + +import django_heroku +django_heroku.settings(locals()) diff --git a/requirements.txt b/requirements.txt index 1acd8af5d3..9b83fb4496 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,3 +9,5 @@ django-rest-swagger==2.2.0 coverage==4.5.2 django-nose==1.4.6 jsonnet==0.12.1 +django-heroku +gunicorn From d144f14c551f5409dbd7b98e5a3dba0c5945764e Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 10 Dec 2020 18:23:10 +0100 Subject: [PATCH 11/26] Configuracion Heroku --- decide/decide/settings.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/decide/decide/settings.py b/decide/decide/settings.py index ae563c3dcf..e55c88e1b3 100644 --- a/decide/decide/settings.py +++ b/decide/decide/settings.py @@ -70,7 +70,9 @@ 'voting', ] -BASEURL = 'http://localhost:8000' +BASEURL = 'https://picaro-decide.herokuapp.com' + +APIS = {} MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', From 06d68f2ccb05d25be98e91f41c70a2a285280da7 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 10 Dec 2020 18:39:02 +0100 Subject: [PATCH 12/26] Configuracion Heroku --- decide/decide/settings.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/decide/decide/settings.py b/decide/decide/settings.py index e55c88e1b3..6ea3ab1e6e 100644 --- a/decide/decide/settings.py +++ b/decide/decide/settings.py @@ -72,7 +72,17 @@ BASEURL = 'https://picaro-decide.herokuapp.com' -APIS = {} +APIS = { + 'authentication': BASEURL , + 'base': BASEURL , + 'booth': BASEURL , + 'census': BASEURL , + 'mixnet': BASEURL , + 'postproc': BASEURL , + 'store': BASEURL , + 'visualizer': BASEURL , + 'voting': BASEURL , + } MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', From 63e0044096b0f1adc2a526ce3b98ad2b9cc156a4 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 10 Dec 2020 18:46:02 +0100 Subject: [PATCH 13/26] Configuracion Heroku --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index cc0877af2f..b823e313b4 100644 --- a/.gitignore +++ b/.gitignore @@ -52,6 +52,7 @@ coverage.xml # Django stuff: *.log +local_settings.py # Flask stuff: instance/ From ef8247f717cffbc89a8850b76024c2376a745967 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Franco=20S=C3=A1nchez?= <56022165+pabfrasan@users.noreply.github.com> Date: Thu, 10 Dec 2020 18:53:25 +0100 Subject: [PATCH 14/26] Delete local_settings.py --- decide/local_settings.py | 43 ---------------------------------------- 1 file changed, 43 deletions(-) delete mode 100644 decide/local_settings.py diff --git a/decide/local_settings.py b/decide/local_settings.py deleted file mode 100644 index 375fc61e9b..0000000000 --- a/decide/local_settings.py +++ /dev/null @@ -1,43 +0,0 @@ -ALLOWED_HOSTS = ["*"] - -# Modules in use, commented modules that you won't use -MODULES = [ - 'authentication', - 'base', - 'booth', - 'census', - 'mixnet', - 'postproc', - 'store', - 'visualizer', - 'voting', -] -BASEURL = 'http://localhost:8000' - -APIS = { - 'authentication': BASEURL , - 'base': BASEURL , - 'booth': BASEURL , - 'census': BASEURL , - 'mixnet': BASEURL , - 'postproc': BASEURL , - 'store': BASEURL , - 'visualizer': BASEURL , - 'voting': BASEURL , -} - - - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql', - 'NAME': 'decidedb', - 'USER': 'decide2', - 'PASSWORD': 'decide', - 'HOST': 'localhost', - 'PORT': '5432', - } -} - -# number of bits for the key, all auths should use the same number of bits -KEYBITS = 256 From db74e05c187c5792b159d26f049928db017f35e3 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 10 Dec 2020 20:00:08 +0100 Subject: [PATCH 15/26] =?UTF-8?q?Cambios=20de=20configuraci=C3=B3n.=20loca?= =?UTF-8?q?l=5Fsettings.py=20eliminado,=20cada=20usuario=20deber=C3=A1=20a?= =?UTF-8?q?gregar=20su=20archivo.=20Usuario=20de=20la=20db(decidedb):=20us?= =?UTF-8?q?er=3Ddecide,pass=3Ddecide?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .travis.yml | 6 +++--- decide/.local_settings.py.swp | Bin 12288 -> 0 bytes requirements.txt | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 decide/.local_settings.py.swp diff --git a/.travis.yml b/.travis.yml index 8676666719..bfdc7ec840 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,9 +5,9 @@ services: addons: postgresql: "9.4" before_script: - - psql -U postgres -c "create user decide2 password 'decide'" - - psql -U postgres -c "create database decidedb owner decide2" - - psql -U postgres -c "ALTER USER decide2 CREATEDB" + - psql -U postgres -c "create user decide password 'decide'" + - psql -U postgres -c "create database decidedb owner decide" + - psql -U postgres -c "ALTER USER decide CREATEDB" language: python python: - "3.6" diff --git a/decide/.local_settings.py.swp b/decide/.local_settings.py.swp deleted file mode 100644 index 0dc1795c59956186ebb05575a15d16c755cfe7e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2%}*0S6u=+eKtQ7&jTs?v6RBR-f!m8blv2`OpZ;&hXKoF z0L4D6J-9XvU+w_Z95)cU|AcbdanBnA6Q$5kq-XCXJYM!a-l_soc7ip@mGZ+48L#b} zuqcJe02w%=fj$@=8BXd+g9A6&)hnel&ZpsIfDDiUGC&5%02v?yWPl8uX9KF%1urmx z3nqynQ+Ku1rb!hUAOmE843GgbKnBPF86X2>fDDiUGH?zJI37SxFTi(1|Nr0m{l9k! z;3x7Cd5^q7ULo6vkE|eb$TSi|ZXnl@Km7o|kzdGHDGgaYilkdcs69mkOR7Emb5mDf=Nb*KhI#u2_ z6W|#zEX_~-&05G87OhEUjgO6vSTWFjx>)z~#YTVQo#u*=3WMF&f?X^wcX|0%C`#-tK;-r21; zP^*h_XQb*s3Ax@!+ahHi%1CzhyF#eSG2M%~X`4Jv%VcL-&74{dor(G0w*MI9@~Kj` zaZoFGqjSQG0xp>!>iZgFWl^nSy4+(`6HygMu^kbyZA@S3Q2=%}n_o(&*7W7n3RVVg H53IsJZzU5> diff --git a/requirements.txt b/requirements.txt index 9b83fb4496..61e80a1373 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ djangorestframework==3.7.7 django-cors-headers==2.1.0 requests==2.18.4 django-filter==1.1.0 -psycopg2-binary==2.7.4 +psycopg2-binary==2.8.4 django-rest-swagger==2.2.0 coverage==4.5.2 django-nose==1.4.6 From 00a0fe3fe2afb03e0a6df558c619556f16841cfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Franco=20S=C3=A1nchez?= <56022165+pabfrasan@users.noreply.github.com> Date: Thu, 17 Dec 2020 12:30:34 +0100 Subject: [PATCH 16/26] Update .travis.yml --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.travis.yml b/.travis.yml index b72f88a6e0..eb3afc5d25 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,3 +19,8 @@ script: - coverage run --branch --source=. ./manage.py test --keepdb --with-xunit - coverage xml - python-codacy-coverage -r coverage.xml +deploy: + provider: heroku + app: picaro-decide + strategy: git + api_key: $HEROKU_AUTH_TOKEN From c6f832351c674df5f9a02eb18877e7cb743f293a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Franco=20S=C3=A1nchez?= <56022165+pabfrasan@users.noreply.github.com> Date: Thu, 17 Dec 2020 13:04:39 +0100 Subject: [PATCH 17/26] Update .travis.yml --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.travis.yml b/.travis.yml index bfdc7ec840..b889d00dda 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,3 +19,8 @@ script: - coverage run --branch --source=. ./manage.py test --keepdb --with-xunit - coverage xml - python-codacy-coverage -r coverage.xml +deploy: + provider: heroku + app: picaro-decide + strategy: git + api_key: $HEROKU_AUTH_TOKEN From db023512011b8e960f4a7b2d9b45a2e7fc3384ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Franco=20S=C3=A1nchez?= <56022165+pabfrasan@users.noreply.github.com> Date: Thu, 17 Dec 2020 13:27:44 +0100 Subject: [PATCH 18/26] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b889d00dda..aa0990df11 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ install: - pip install codacy-coverage script: - cd decide - - coverage run --branch --source=. ./manage.py test --keepdb --with-xunit + - coverage run --branch --source=. ./manage.py test census --keepdb - coverage xml - python-codacy-coverage -r coverage.xml deploy: From 2474db5f76e844b8963196f1e648ef370d81cf3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Franco=20S=C3=A1nchez?= <56022165+pabfrasan@users.noreply.github.com> Date: Thu, 17 Dec 2020 13:52:25 +0100 Subject: [PATCH 19/26] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index aa0990df11..7e65af0b0a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ install: - pip install codacy-coverage script: - cd decide - - coverage run --branch --source=. ./manage.py test census --keepdb + - coverage run --branch --source=. ./manage.py test --keepdb - coverage xml - python-codacy-coverage -r coverage.xml deploy: From 4a1ffb0d65904cee1f3ec2b4e9eaffc603c1cb8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Franco=20S=C3=A1nchez?= <56022165+pabfrasan@users.noreply.github.com> Date: Thu, 17 Dec 2020 14:26:31 +0100 Subject: [PATCH 20/26] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 7e65af0b0a..b889d00dda 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ install: - pip install codacy-coverage script: - cd decide - - coverage run --branch --source=. ./manage.py test --keepdb + - coverage run --branch --source=. ./manage.py test --keepdb --with-xunit - coverage xml - python-codacy-coverage -r coverage.xml deploy: From ffad0fed6fa9b980b0befb21b29faaca90280aa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Franco=20S=C3=A1nchez?= <56022165+pabfrasan@users.noreply.github.com> Date: Thu, 17 Dec 2020 17:56:13 +0100 Subject: [PATCH 21/26] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b889d00dda..7e65af0b0a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ install: - pip install codacy-coverage script: - cd decide - - coverage run --branch --source=. ./manage.py test --keepdb --with-xunit + - coverage run --branch --source=. ./manage.py test --keepdb - coverage xml - python-codacy-coverage -r coverage.xml deploy: From 838c8125ba2997ab895fa1c50551fff966b39d39 Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 17 Dec 2020 18:17:37 +0100 Subject: [PATCH 22/26] travis_local_settings.py creado y .travis.yml actualizado --- .travis.yml | 3 ++- decide/travis_local_settings.py | 41 +++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 decide/travis_local_settings.py diff --git a/.travis.yml b/.travis.yml index 7e65af0b0a..d821fd9331 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,8 @@ install: - pip install codacy-coverage script: - cd decide - - coverage run --branch --source=. ./manage.py test --keepdb + - cp travis_local_settings.py local_settings.py + - coverage run --branch --source=. ./manage.py test mixnet --keepdb - coverage xml - python-codacy-coverage -r coverage.xml deploy: diff --git a/decide/travis_local_settings.py b/decide/travis_local_settings.py new file mode 100644 index 0000000000..d4162dae92 --- /dev/null +++ b/decide/travis_local_settings.py @@ -0,0 +1,41 @@ +ALLOWED_HOSTS = ["*"] + +# Modules in use, commented modules that you won't use +MODULES = [ + 'authentication', + 'base', + 'booth', + 'census', + 'mixnet', + 'postproc', + 'store', + 'visualizer', + 'voting', +] + +APIS = { + 'authentication': 'http://localhost:8000', + 'base': 'http://localhost:8000', + 'booth': 'http://localhost:8000', + 'census': 'http://localhost:8000', + 'mixnet': 'http://localhost:8000', + 'postproc': 'http://localhost:8000', + 'store': 'http://localhost:8000', + 'visualizer': 'http://localhost:8000', + 'voting': 'http://localhost:8000', +} + +BASEURL = 'http://localhost:8000' + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql', + 'NAME': 'postgres', + 'USER': 'postgres', + 'HOST': 'localhost', + 'PORT': '5432', + } +} + +# number of bits for the key, all auths should use the same number of bits +KEYBITS = 256 From 068c22f74f3a627b49dc259591af0305c91626af Mon Sep 17 00:00:00 2001 From: pabfrasan Date: Thu, 17 Dec 2020 18:41:56 +0100 Subject: [PATCH 23/26] =?UTF-8?q?Integraci=C3=B3n=20de=20travis=20con=20he?= =?UTF-8?q?roku?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .travis.yml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.travis.yml b/.travis.yml index d821fd9331..b78b9d2d0e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,27 +1,27 @@ dist: xenial - services: - - postgresql +- postgresql addons: - postgresql: "9.4" + postgresql: '9.4' before_script: - - psql -U postgres -c "create user decide password 'decide'" - - psql -U postgres -c "create database decidedb owner decide" - - psql -U postgres -c "ALTER USER decide CREATEDB" +- psql -U postgres -c "create user decide password 'decide'" +- psql -U postgres -c "create database decidedb owner decide" +- psql -U postgres -c "ALTER USER decide CREATEDB" language: python python: - - "3.6" +- '3.6' install: - - pip install -r requirements.txt - - pip install codacy-coverage +- pip install -r requirements.txt +- pip install codacy-coverage script: - - cd decide - - cp travis_local_settings.py local_settings.py - - coverage run --branch --source=. ./manage.py test mixnet --keepdb - - coverage xml - - python-codacy-coverage -r coverage.xml +- cd decide +- cp travis_local_settings.py local_settings.py +- coverage run --branch --source=. ./manage.py test mixnet --keepdb +- coverage xml +- python-codacy-coverage -r coverage.xml deploy: provider: heroku app: picaro-decide strategy: git - api_key: $HEROKU_AUTH_TOKEN + api_key: + secure: SDt7FSvAfUp9J0aA0vhQGKN7ZUfHvbyX/GMr/gVQmlkobFNWu9Wk8f5O2jzxEcHJfP9DKRPwzK5CF2d422bd/toKXEJldIoZL57YQnomlKElqetaLBoETyydhn/oZkkF+aTv/zZF92m2dQGetTlG6Zp1sqFSW9BwXFKBrMIh9XjqFton6AFDZ5DPCy6Gn9303OAkxtWmqG4EGTEzJ2VV9ambCEMs30ZSeAGn4eVbWC92CvSaef32aOBvKcHKSKIrBkN5Y0olYGHRj00s+tr0iBlVfxKyVb1lI6vwuuh85+8w2UGVXp+NCAEy+Dm1RLz3lhDi3hpIyXK1V9JCqw6arbuNgvB0vHvRuldAj8cw3lmpD9kLlmDfstyw5MJd8UAf22rwsI1nUA6Ga/qycAD1kOIOgPwF6oWLW16M+MOGE/+loZIj4NmQTs3wiYAemqwVqEHc9enViEAaSD2M2zUWPI7L2m9gd2iOll6UleKosqz9f8hQFBLKcaTuaoH5qRHAIPeSVIAZA+GmJhbj9lM++yVhZW5aJ0SVzx+RhGAXcgweVNtUIH8F2DU1Es001zNML90k+G47MpnGqfIHuZcxSVtttLS6raoJIHEQSNUzfwXsy4mBjnUzZvy4YeOf/DId8kb/Wrk0+8P/MOoaDVUEePae7rz4jRcHfHj1UXMPpd0= From 78b1e8e9454a19ca99fcd24ef3dbbfdbbe0a627a Mon Sep 17 00:00:00 2001 From: marti Date: Sat, 19 Dec 2020 12:48:48 +0100 Subject: [PATCH 24/26] Dark mode and light mode implements --- .vscode/settings.json | 3 + decide/base/templates/base.html | 6 +- decide/decide/settings.py | 19 +++++++ decide/postproc/views.py | 2 +- decide/{booth => }/static/booth/style.css | 0 decide/{booth => }/static/crypto/bigint.js | 0 decide/{booth => }/static/crypto/elgamal.js | 0 decide/{booth => }/static/crypto/jsbn.js | 0 decide/{booth => }/static/crypto/jsbn2.js | 0 decide/{booth => }/static/crypto/sjcl.js | 0 decide/static/css/footer.css | 9 +++ decide/static/favicon/picaro.png | Bin 0 -> 11229 bytes .../templates/visualizer/visualizer.html | 52 ++++++++++++++++-- 13 files changed, 83 insertions(+), 8 deletions(-) create mode 100644 .vscode/settings.json rename decide/{booth => }/static/booth/style.css (100%) rename decide/{booth => }/static/crypto/bigint.js (100%) rename decide/{booth => }/static/crypto/elgamal.js (100%) rename decide/{booth => }/static/crypto/jsbn.js (100%) rename decide/{booth => }/static/crypto/jsbn2.js (100%) rename decide/{booth => }/static/crypto/sjcl.js (100%) create mode 100644 decide/static/css/footer.css create mode 100644 decide/static/favicon/picaro.png diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000..18c002a3ca --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.pythonPath": "C:\\Python3\\python.exe" +} \ No newline at end of file diff --git a/decide/base/templates/base.html b/decide/base/templates/base.html index fa9cf4aa8a..713d747efb 100644 --- a/decide/base/templates/base.html +++ b/decide/base/templates/base.html @@ -1,8 +1,10 @@ - +{% load i18n static %} + - {% block title %}Decide!{% endblock %} + Decide Pícaro{% block title %}{% endblock %} + {% block extrahead %}{% endblock %} diff --git a/decide/decide/settings.py b/decide/decide/settings.py index 6ea3ab1e6e..8bcb28e216 100644 --- a/decide/decide/settings.py +++ b/decide/decide/settings.py @@ -162,6 +162,10 @@ USE_TZ = True +LOCALE_PATHS = [ + os.path.join(BASE_DIR, 'locale') +] + TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' @@ -169,6 +173,21 @@ # https://docs.djangoproject.com/en/2.0/howto/static-files/ STATIC_URL = '/static/' +STATIC_ROOT = '' +STATIC_TMP = os.path.join(BASE_DIR, 'static') + +os.makedirs(STATIC_TMP, exist_ok=True) + +STATICFILES_DIRS = ( + 'static', +) + +MEDIA_URL = '/media/' +MEDIA_ROOT = '' + +MEDIAFILES_DIRS = ( + 'media', +) # number of bits for the key, all auths should use the same number of bits KEYBITS = 256 diff --git a/decide/postproc/views.py b/decide/postproc/views.py index f4c5de1e5f..47871478a6 100644 --- a/decide/postproc/views.py +++ b/decide/postproc/views.py @@ -11,7 +11,7 @@ def identity(self, options): out.append({ **opt, 'postproc': opt['votes'], - }); + }) out.sort(key=lambda x: -x['postproc']) return Response(out) diff --git a/decide/booth/static/booth/style.css b/decide/static/booth/style.css similarity index 100% rename from decide/booth/static/booth/style.css rename to decide/static/booth/style.css diff --git a/decide/booth/static/crypto/bigint.js b/decide/static/crypto/bigint.js similarity index 100% rename from decide/booth/static/crypto/bigint.js rename to decide/static/crypto/bigint.js diff --git a/decide/booth/static/crypto/elgamal.js b/decide/static/crypto/elgamal.js similarity index 100% rename from decide/booth/static/crypto/elgamal.js rename to decide/static/crypto/elgamal.js diff --git a/decide/booth/static/crypto/jsbn.js b/decide/static/crypto/jsbn.js similarity index 100% rename from decide/booth/static/crypto/jsbn.js rename to decide/static/crypto/jsbn.js diff --git a/decide/booth/static/crypto/jsbn2.js b/decide/static/crypto/jsbn2.js similarity index 100% rename from decide/booth/static/crypto/jsbn2.js rename to decide/static/crypto/jsbn2.js diff --git a/decide/booth/static/crypto/sjcl.js b/decide/static/crypto/sjcl.js similarity index 100% rename from decide/booth/static/crypto/sjcl.js rename to decide/static/crypto/sjcl.js diff --git a/decide/static/css/footer.css b/decide/static/css/footer.css new file mode 100644 index 0000000000..d27329bb10 --- /dev/null +++ b/decide/static/css/footer.css @@ -0,0 +1,9 @@ + +.footer { + position: absolute; + bottom: 0; + width: 100%; + + background-color: #f5f5f5; + } + diff --git a/decide/static/favicon/picaro.png b/decide/static/favicon/picaro.png new file mode 100644 index 0000000000000000000000000000000000000000..19ac79cb3b0b7c53178840ad540a748eb35de32e GIT binary patch literal 11229 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 literal 0 HcmV?d00001 diff --git a/decide/visualizer/templates/visualizer/visualizer.html b/decide/visualizer/templates/visualizer/visualizer.html index 0faed6bac3..b517666dc6 100644 --- a/decide/visualizer/templates/visualizer/visualizer.html +++ b/decide/visualizer/templates/visualizer/visualizer.html @@ -1,21 +1,40 @@ {% extends "base.html" %} {% load i18n static %} +{% block title %} - Visualización{% endblock %} {% block extrahead %} - + + + + + {% endblock %} {% block content %}
- Decide - + Decide Visualización + + + + + ES + EN + + + + + + + +
+ +
{% endblock %} @@ -62,5 +89,20 @@

Resultados:

} }) - + + {% endblock %} From 9e2ecc07b343bddd57d5c9342b762bf7c974750b Mon Sep 17 00:00:00 2001 From: marti Date: Sat, 19 Dec 2020 15:03:26 +0100 Subject: [PATCH 25/26] Floating action button implement --- .project | 11 + decide/static/css/mfb.css | 671 ++++++++++++++++++ decide/static/images/england.jpg | Bin 0 -> 10009 bytes decide/static/images/spain.jpg | Bin 0 -> 4944 bytes decide/static/js/mfb.js | 98 +++ .../templates/visualizer/visualizer.html | 68 +- 6 files changed, 810 insertions(+), 38 deletions(-) create mode 100644 .project create mode 100644 decide/static/css/mfb.css create mode 100644 decide/static/images/england.jpg create mode 100644 decide/static/images/spain.jpg create mode 100644 decide/static/js/mfb.js diff --git a/.project b/.project new file mode 100644 index 0000000000..cb4da071c5 --- /dev/null +++ b/.project @@ -0,0 +1,11 @@ + + + decide + + + + + + + + diff --git a/decide/static/css/mfb.css b/decide/static/css/mfb.css new file mode 100644 index 0000000000..39063306c3 --- /dev/null +++ b/decide/static/css/mfb.css @@ -0,0 +1,671 @@ +/** + * CONTENTS + * + * #Introduction........Naming conventions used throughout the code. + * + * #SETTINGS + * Variables............Globally-available variables and config. + * + * #TOOLS + * Mixins...............Useful mixins. + * + * #GENERIC + * Demo styles..........Styles for demo only (consider removing these). + * + * #BASE + * Raw styles...........The very basic component wrapper. + * Modifiers............The basic styles dependant on component placement. + * Debuggers............The basic styles dependant on component placement. + * + * #BUTTONS + * Base..................Wrapping and constraining every button. + * Modifiers.............Styles that depends on state and settings. + * Animations............Main animations of the component. + * Debuggers.............Styles for development. + * + * #LABELS + * Base..................Wrapping and constraining every label. + * Modifiers.............Styles that depends on state and settings. + * Debuggers.............Styles for development. + * + * #DEVELOPMENT + * In development........These styles are in development and not yet finalised + * Debuggers.............Helper styles and flags for development. + */ +/*------------------------------------*\ + #Introduction +\*------------------------------------*/ +/** + * The code AND the comments use naming conventions to refer to each part of + * the UI put in place by this component. If you see that somewhere they are + * not followed please consider a Pull Request. The naming conventions are: + * + * "Component" : the widget itself as a whole. This is the last time it will be + * called anything different than "component". So, stay away from + * "widget", "button" or anything else when referring to the + * Component in general. + * + * "Main Button" : the button that is always in view. Hovering or clicking on it + * will reveal the child buttons. + * + * "Child buttons" : if you've read the previous point you know what they are. + * Did you read the previous point? :) + * + * "Label(s)" : the tooltip that fades in when hovering over a button. + +/*------------------------------------*\ + #SETTINGS | Variables +\*------------------------------------*/ +/** + * These variables are the default styles that serve as fallback and can be + * easily customised at compile time. + * Consider overriding them in your own style sheets rather than editing them + * here. Refer to the docs for more info. + */ +/* COLORS ----------------------------*/ +/* EFFECTS ---------------------------*/ +/* SPEEDS ----------------------------*/ +/* SIZES -----------------------------*/ +/* SPACING ---------------------------*/ +/* OTHER VARIABLES -------------------*/ +/*------------------------------------*\ + #BASE | Raw styles +\*------------------------------------*/ +/** + * The very core styling of the button. + * These styles are shared by every instance of the button. + * Styles placed here should NOT care about placement in the screen, + * options chosen by the user or state of the button. + */ +.mfb-component--tl, .mfb-component--tr, .mfb-component--bl, .mfb-component--br { + box-sizing: border-box; + margin: 25px; + position: fixed; + white-space: nowrap; + z-index: 30; + padding-left: 0; + list-style: none; } + .mfb-component--tl *, .mfb-component--tr *, .mfb-component--bl *, .mfb-component--br *, .mfb-component--tl *:before, .mfb-component--tr *:before, .mfb-component--bl *:before, .mfb-component--br *:before, .mfb-component--tl *:after, .mfb-component--tr *:after, .mfb-component--bl *:after, .mfb-component--br *:after { + box-sizing: inherit; } + +/*------------------------------------*\ + #BASE | Modifiers +\*------------------------------------*/ +/** + * These styles depends on the placement of the button. + * Styles can be: + * 1. Top-left: modified by the " --tl " suffix. + * 2. Top-right: modified by the " --tr " suffix. + * 3. Bottom-left: modified by the " --bl " suffix. + * 4. Bottom-right: modified by the " --br " suffix. + */ +.mfb-component--tl { + left: 0; + top: 0; } + +.mfb-component--tr { + right: 0; + top: 0; } + +.mfb-component--bl { + left: 0; + bottom: 0; } + +.mfb-component--br { + right: 0; + bottom: 0; } + +/*------------------------------------*\ + #BUTTONS | Base +\*------------------------------------*/ +.mfb-component__button--main, .mfb-component__button--child { + background-color: #E40A5D; + display: inline-block; + position: relative; + border: none; + border-radius: 50%; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.28); + cursor: pointer; + outline: none; + padding: 0; + position: relative; + -webkit-user-drag: none; + color: #f1f1f1; } + +/** + * This is the unordered list for the list items that contain + * the child buttons. + * + */ +.mfb-component__list { + list-style: none; + margin: 0; + padding: 0; } + .mfb-component__list > li { + display: block; + position: absolute; + top: 0; + right: 1px; + padding: 10px 0; + margin: -10px 0; } + +/** + * These are the basic styles for all the icons inside the main button + */ +.mfb-component__icon, .mfb-component__main-icon--active, +.mfb-component__main-icon--resting, .mfb-component__child-icon { + position: absolute; + font-size: 18px; + text-align: center; + line-height: 56px; + width: 100%; } + +.mfb-component__wrap { + padding: 25px; + margin: -25px; } + +[data-mfb-toggle="hover"]:hover .mfb-component__icon, [data-mfb-toggle="hover"]:hover .mfb-component__main-icon--active, +[data-mfb-toggle="hover"]:hover .mfb-component__main-icon--resting, [data-mfb-toggle="hover"]:hover .mfb-component__child-icon, +[data-mfb-state="open"] .mfb-component__icon, +[data-mfb-state="open"] .mfb-component__main-icon--active, +[data-mfb-state="open"] .mfb-component__main-icon--resting, +[data-mfb-state="open"] .mfb-component__child-icon { + -webkit-transform: scale(1) rotate(0deg); + transform: scale(1) rotate(0deg); } + +/*------------------------------------*\ + #BUTTONS | Modifiers +\*------------------------------------*/ +.mfb-component__button--main { + height: 56px; + width: 56px; + z-index: 20; } + +.mfb-component__button--child { + height: 56px; + width: 56px; } + +.mfb-component__main-icon--active, +.mfb-component__main-icon--resting { + -webkit-transform: scale(1) rotate(360deg); + transform: scale(1) rotate(360deg); + -webkit-transition: -webkit-transform 150ms cubic-bezier(0.4, 0, 1, 1); + transition: transform 150ms cubic-bezier(0.4, 0, 1, 1); } + +.mfb-component__child-icon, +.mfb-component__child-icon { + line-height: 56px; + font-size: 18px; } + +.mfb-component__main-icon--active { + opacity: 0; } + +[data-mfb-toggle="hover"]:hover .mfb-component__main-icon, +[data-mfb-state="open"] .mfb-component__main-icon { + -webkit-transform: scale(1) rotate(0deg); + transform: scale(1) rotate(0deg); } +[data-mfb-toggle="hover"]:hover .mfb-component__main-icon--resting, +[data-mfb-state="open"] .mfb-component__main-icon--resting { + opacity: 0; + position: absolute !important; } +[data-mfb-toggle="hover"]:hover .mfb-component__main-icon--active, +[data-mfb-state="open"] .mfb-component__main-icon--active { + opacity: 1; } + +/*------------------------------------*\ + #BUTTONS | Animations +\*------------------------------------*/ +/** + * SLIDE IN + FADE + * When hovering the main button, the child buttons slide out from beneath + * the main button while transitioning from transparent to opaque. + * + */ +.mfb-component--tl.mfb-slidein .mfb-component__list li, +.mfb-component--tr.mfb-slidein .mfb-component__list li { + opacity: 0; + transition: all 0.5s; } +.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li, .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li, +.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li, +.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li { + opacity: 1; } +.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(70px); + transform: translateY(70px); } +.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(140px); + transform: translateY(140px); } +.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(210px); + transform: translateY(210px); } +.mfb-component--tl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--tl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(280px); + transform: translateY(280px); } + +.mfb-component--bl.mfb-slidein .mfb-component__list li, +.mfb-component--br.mfb-slidein .mfb-component__list li { + opacity: 0; + transition: all 0.5s; } +.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li, .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li, +.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li, +.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li { + opacity: 1; } +.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(-70px); + transform: translateY(-70px); } +.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(-140px); + transform: translateY(-140px); } +.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(-210px); + transform: translateY(-210px); } +.mfb-component--bl.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--bl.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-slidein[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-slidein[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(-280px); + transform: translateY(-280px); } + +/** + * SLIDE IN SPRING + * Same as slide-in but with a springy animation. + * + */ +.mfb-component--tl.mfb-slidein-spring .mfb-component__list li, +.mfb-component--tr.mfb-slidein-spring .mfb-component__list li { + opacity: 0; + transition: all 0.5s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } +.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(1) { + transition-delay: 0.05s; } +.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(2) { + transition-delay: 0.1s; } +.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(3) { + transition-delay: 0.15s; } +.mfb-component--tl.mfb-slidein-spring .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-slidein-spring .mfb-component__list li:nth-child(4) { + transition-delay: 0.2s; } +.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li, .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li, +.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li, +.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li { + opacity: 1; } +.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { + transition-delay: 0.05s; + -webkit-transform: translateY(70px); + transform: translateY(70px); } +.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { + transition-delay: 0.1s; + -webkit-transform: translateY(140px); + transform: translateY(140px); } +.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { + transition-delay: 0.15s; + -webkit-transform: translateY(210px); + transform: translateY(210px); } +.mfb-component--tl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--tl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { + transition-delay: 0.2s; + -webkit-transform: translateY(280px); + transform: translateY(280px); } + +.mfb-component--bl.mfb-slidein-spring .mfb-component__list li, +.mfb-component--br.mfb-slidein-spring .mfb-component__list li { + opacity: 0; + transition: all 0.5s; + transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); } +.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(1) { + transition-delay: 0.05s; } +.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(2) { + transition-delay: 0.1s; } +.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(3) { + transition-delay: 0.15s; } +.mfb-component--bl.mfb-slidein-spring .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-slidein-spring .mfb-component__list li:nth-child(4) { + transition-delay: 0.2s; } +.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li, .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li, +.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li, +.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li { + opacity: 1; } +.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { + transition-delay: 0.05s; + -webkit-transform: translateY(-70px); + transform: translateY(-70px); } +.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { + transition-delay: 0.1s; + -webkit-transform: translateY(-140px); + transform: translateY(-140px); } +.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { + transition-delay: 0.15s; + -webkit-transform: translateY(-210px); + transform: translateY(-210px); } +.mfb-component--bl.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--bl.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-slidein-spring[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-slidein-spring[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { + transition-delay: 0.2s; + -webkit-transform: translateY(-280px); + transform: translateY(-280px); } + +/** + * ZOOM-IN + * When hovering the main button, the child buttons grow + * from zero to normal size. + * + */ +.mfb-component--tl.mfb-zoomin .mfb-component__list li, +.mfb-component--tr.mfb-zoomin .mfb-component__list li { + -webkit-transform: scale(0); + transform: scale(0); } +.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(70px) scale(0); + transform: translateY(70px) scale(0); + transition: all 0.5s; + transition-delay: 0.15s; } +.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(140px) scale(0); + transform: translateY(140px) scale(0); + transition: all 0.5s; + transition-delay: 0.1s; } +.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(210px) scale(0); + transform: translateY(210px) scale(0); + transition: all 0.5s; + transition-delay: 0.05s; } +.mfb-component--tl.mfb-zoomin .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-zoomin .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(280px) scale(0); + transform: translateY(280px) scale(0); + transition: all 0.5s; + transition-delay: 0s; } +.mfb-component--tl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--tl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(70px) scale(1); + transform: translateY(70px) scale(1); + transition-delay: 0.05s; } +.mfb-component--tl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--tl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(140px) scale(1); + transform: translateY(140px) scale(1); + transition-delay: 0.1s; } +.mfb-component--tl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--tl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(210px) scale(1); + transform: translateY(210px) scale(1); + transition-delay: 0.15s; } +.mfb-component--tl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--tl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(280px) scale(1); + transform: translateY(280px) scale(1); + transition-delay: 0.2s; } + +.mfb-component--bl.mfb-zoomin .mfb-component__list li, +.mfb-component--br.mfb-zoomin .mfb-component__list li { + -webkit-transform: scale(0); + transform: scale(0); } +.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(-70px) scale(0); + transform: translateY(-70px) scale(0); + transition: all 0.5s; + transition-delay: 0.15s; } +.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(-140px) scale(0); + transform: translateY(-140px) scale(0); + transition: all 0.5s; + transition-delay: 0.1s; } +.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(-210px) scale(0); + transform: translateY(-210px) scale(0); + transition: all 0.5s; + transition-delay: 0.05s; } +.mfb-component--bl.mfb-zoomin .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-zoomin .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(-280px) scale(0); + transform: translateY(-280px) scale(0); + transition: all 0.5s; + transition-delay: 0s; } +.mfb-component--bl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--bl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(-70px) scale(1); + transform: translateY(-70px) scale(1); + transition-delay: 0.05s; } +.mfb-component--bl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--bl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(-140px) scale(1); + transform: translateY(-140px) scale(1); + transition-delay: 0.1s; } +.mfb-component--bl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--bl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(-210px) scale(1); + transform: translateY(-210px) scale(1); + transition-delay: 0.15s; } +.mfb-component--bl.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--bl.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-zoomin[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-zoomin[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(-280px) scale(1); + transform: translateY(-280px) scale(1); + transition-delay: 0.2s; } + +/** + * FOUNTAIN + * When hovering the main button the child buttons + * jump into view from outside the viewport + */ +.mfb-component--tl.mfb-fountain .mfb-component__list li, +.mfb-component--tr.mfb-fountain .mfb-component__list li { + -webkit-transform: scale(0); + transform: scale(0); } +.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(-70px) scale(0); + transform: translateY(-70px) scale(0); + transition: all 0.5s; + transition-delay: 0.15s; } +.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(-140px) scale(0); + transform: translateY(-140px) scale(0); + transition: all 0.5s; + transition-delay: 0.1s; } +.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(-210px) scale(0); + transform: translateY(-210px) scale(0); + transition: all 0.5s; + transition-delay: 0.05s; } +.mfb-component--tl.mfb-fountain .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-fountain .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(-280px) scale(0); + transform: translateY(-280px) scale(0); + transition: all 0.5s; + transition-delay: 0s; } +.mfb-component--tl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--tl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), +.mfb-component--tr.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(70px) scale(1); + transform: translateY(70px) scale(1); + transition-delay: 0.05s; } +.mfb-component--tl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--tl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), +.mfb-component--tr.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(140px) scale(1); + transform: translateY(140px) scale(1); + transition-delay: 0.1s; } +.mfb-component--tl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--tl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), +.mfb-component--tr.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(210px) scale(1); + transform: translateY(210px) scale(1); + transition-delay: 0.15s; } +.mfb-component--tl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--tl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), +.mfb-component--tr.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(280px) scale(1); + transform: translateY(280px) scale(1); + transition-delay: 0.2s; } + +.mfb-component--bl.mfb-fountain .mfb-component__list li, +.mfb-component--br.mfb-fountain .mfb-component__list li { + -webkit-transform: scale(0); + transform: scale(0); } +.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(70px) scale(0); + transform: translateY(70px) scale(0); + transition: all 0.5s; + transition-delay: 0.15s; } +.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(140px) scale(0); + transform: translateY(140px) scale(0); + transition: all 0.5s; + transition-delay: 0.1s; } +.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(210px) scale(0); + transform: translateY(210px) scale(0); + transition: all 0.5s; + transition-delay: 0.05s; } +.mfb-component--bl.mfb-fountain .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-fountain .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(280px) scale(0); + transform: translateY(280px) scale(0); + transition: all 0.5s; + transition-delay: 0s; } +.mfb-component--bl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), .mfb-component--bl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(1), +.mfb-component--br.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(1) { + -webkit-transform: translateY(-70px) scale(1); + transform: translateY(-70px) scale(1); + transition-delay: 0.05s; } +.mfb-component--bl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), .mfb-component--bl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(2), +.mfb-component--br.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(2) { + -webkit-transform: translateY(-140px) scale(1); + transform: translateY(-140px) scale(1); + transition-delay: 0.1s; } +.mfb-component--bl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), .mfb-component--bl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(3), +.mfb-component--br.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(3) { + -webkit-transform: translateY(-210px) scale(1); + transform: translateY(-210px) scale(1); + transition-delay: 0.15s; } +.mfb-component--bl.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), .mfb-component--bl.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-fountain[data-mfb-toggle="hover"]:hover .mfb-component__list li:nth-child(4), +.mfb-component--br.mfb-fountain[data-mfb-state="open"] .mfb-component__list li:nth-child(4) { + -webkit-transform: translateY(-280px) scale(1); + transform: translateY(-280px) scale(1); + transition-delay: 0.2s; } + +/*------------------------------------*\ + #LABELS | base +\*------------------------------------*/ +/** + * These are the labels associated to each button, + * exposed only when hovering the related button. + * They are called labels but are in fact data-attributes of + * each button (an anchor tag). + */ +[data-mfb-label]:after { + content: attr(data-mfb-label); + opacity: 0; + transition: all 0.5s; + background: rgba(0, 0, 0, 0.4); + padding: 4px 10px; + border-radius: 3px; + color: rgba(255, 255, 255, 0.8); + font-size: 14px; + font-weight: normal; + pointer-events: none; + line-height: normal; + position: absolute; + top: 50%; + margin-top: -11px; + transition: all 0.5s; } + +[data-mfb-toggle="hover"] [data-mfb-label]:hover:after, +[data-mfb-state="open"] [data-mfb-label]:after { + content: attr(data-mfb-label); + opacity: 1; + transition: all 0.3s; } + +/*------------------------------------*\ + #LABELS | Modifiers +\*------------------------------------*/ +.mfb-component--br [data-mfb-label]:after, .mfb-component--tr [data-mfb-label]:after { + content: attr(data-mfb-label); + right: 70px; } + +.mfb-component--br .mfb-component__list [data-mfb-label]:after, .mfb-component--tr .mfb-component__list [data-mfb-label]:after { + content: attr(data-mfb-label); + right: 70px; } + +.mfb-component--tl [data-mfb-label]:after, .mfb-component--bl [data-mfb-label]:after { + content: attr(data-mfb-label); + left: 70px; } + +.mfb-component--tl .mfb-component__list [data-mfb-label]:after, .mfb-component--bl .mfb-component__list [data-mfb-label]:after { + content: attr(data-mfb-label); + left: 70px; } + +/*------------------------------------*\ + #DEVELOPMENT | In development +\*------------------------------------*/ +/** + * This part is where unfinished code should stay. + * When a feature is ready(sh) move these styles to their proper place. + */ +/*------------------------------------*\ + #DEVELOPMENT | Debuggers +\*------------------------------------*/ +/** + * These are mainly helpers for development. They do not have to end up + * in production but it's handy to keep them when developing. + */ +/** + * Apply this class to the html tag when developing the slide-in button + */ + +/*# sourceMappingURL=mfb.css.map */ diff --git a/decide/static/images/england.jpg b/decide/static/images/england.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0aff82d23010899b103c7f895954440b9c7dffb0 GIT binary patch literal 10009 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 literal 0 HcmV?d00001 diff --git a/decide/static/images/spain.jpg b/decide/static/images/spain.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2170439f633a45751865a9a7b41fc49ecb2f4f3b GIT binary patch literal 4944 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 LHqiG5W9|P1Erj0R literal 0 HcmV?d00001 diff --git a/decide/static/js/mfb.js b/decide/static/js/mfb.js new file mode 100644 index 0000000000..ea6ce731fe --- /dev/null +++ b/decide/static/js/mfb.js @@ -0,0 +1,98 @@ +/** + * Material floating button + * By: Nobita + * Repo and docs: https://github.com/nobitagit/material-floating-button + * + * License: MIT + */ + + // build script hook - don't remove + ;(function ( window, document, undefined ) { + + + 'use strict'; + + /** + * Some defaults + */ + var clickOpt = 'click', + hoverOpt = 'hover', + toggleMethod = 'data-mfb-toggle', + menuState = 'data-mfb-state', + isOpen = 'open', + isClosed = 'closed', + mainButtonClass = 'mfb-component__button--main'; + + /** + * Internal references + */ + var elemsToClick, + elemsToHover, + mainButton, + target, + currentState; + + /** + * For every menu we need to get the main button and attach the appropriate evt. + */ + function attachEvt( elems, evt ){ + for( var i = 0, len = elems.length; i < len; i++ ){ + mainButton = elems[i].querySelector('.' + mainButtonClass); + mainButton.addEventListener( evt , toggleButton, false); + } + } + + /** + * Remove the hover option, set a click toggle and a default, + * initial state of 'closed' to menu that's been targeted. + */ + function replaceAttrs( elems ){ + for( var i = 0, len = elems.length; i < len; i++ ){ + elems[i].setAttribute( toggleMethod, clickOpt ); + elems[i].setAttribute( menuState, isClosed ); + } + } + + function getElemsByToggleMethod( selector ){ + return document.querySelectorAll('[' + toggleMethod + '="' + selector + '"]'); + } + + /** + * The open/close action is performed by toggling an attribute + * on the menu main element. + * + * First, check if the target is the menu itself. If it's a child + * keep walking up the tree until we found the main element + * where we can toggle the state. + */ + function toggleButton( evt ){ + + target = evt.target; + while ( target && !target.getAttribute( toggleMethod ) ){ + target = target.parentNode; + if(!target) { return; } + } + + currentState = target.getAttribute( menuState ) === isOpen ? isClosed : isOpen; + + target.setAttribute(menuState, currentState); + + } + + /** + * On touch enabled devices we assume that no hover state is possible. + * So, we get the menu with hover action configured and we set it up + * in order to make it usable with tap/click. + **/ + if ( window.Modernizr && Modernizr.touch ){ + elemsToHover = getElemsByToggleMethod( hoverOpt ); + replaceAttrs( elemsToHover ); + } + + elemsToClick = getElemsByToggleMethod( clickOpt ); + + attachEvt( elemsToClick, 'click' ); + +// build script hook - don't remove +})( window, document ); + diff --git a/decide/visualizer/templates/visualizer/visualizer.html b/decide/visualizer/templates/visualizer/visualizer.html index b517666dc6..a0493fb656 100644 --- a/decide/visualizer/templates/visualizer/visualizer.html +++ b/decide/visualizer/templates/visualizer/visualizer.html @@ -3,15 +3,14 @@ {% block title %} - Visualización{% endblock %} {% block extrahead %} - - + + - + + {% endblock %} {% block content %} @@ -21,12 +20,6 @@ Decide Visualización - - - ES - EN - - @@ -34,34 +27,8 @@ onclick="activateDarkMode()">Modo oscuro - +
+ + + {% endblock %} @@ -90,6 +80,8 @@

Resultados:

}) + + - + + + + {% endblock %}