From 3f300b6ac4e3685bbd37802e28a500b57613813b Mon Sep 17 00:00:00 2001 From: "Sachin S. Kamath" <sskamath96@gmail.com> Date: Sun, 1 Oct 2017 14:01:52 +0530 Subject: [PATCH] Add landing page and modify controller to render landing Signed-off-by: Sachin S. Kamath <sskamath96@gmail.com> --- hodor/controllers/__init__.pyc | Bin 347 -> 0 bytes hodor/controllers/index.py | 16 + hodor/controllers/printer.py | 26 - hodor/controllers/printer.pyc | Bin 1503 -> 0 bytes hodor/models/Printer.pyc | Bin 687 -> 0 bytes hodor/models/__init__.pyc | Bin 147 -> 0 bytes hodor/models/{Printer.py => index.py} | 0 hodor/static/css/style.css | 71 -- hodor/static/css/styles.css | 587 +++++++++ hodor/static/img/hodor.png | Bin 0 -> 84837 bytes hodor/static/js/app.js | 4 + hodor/static/js/modals.js | 152 +++ hodor/static/js/particles.js | 1541 ++++++++++++++++++++++++ hodor/static/particles.json | 110 ++ hodor/templates/index/index.html | 38 + hodor/templates/layout/layout.html | 21 - hodor/templates/layout/navigation.html | 116 ++ hodor/templates/printer/index.html | 8 - hodor/templates/printer/print.html | 10 - 19 files changed, 2564 insertions(+), 136 deletions(-) delete mode 100644 hodor/controllers/__init__.pyc create mode 100644 hodor/controllers/index.py delete mode 100644 hodor/controllers/printer.py delete mode 100644 hodor/controllers/printer.pyc delete mode 100644 hodor/models/Printer.pyc delete mode 100644 hodor/models/__init__.pyc rename hodor/models/{Printer.py => index.py} (100%) delete mode 100644 hodor/static/css/style.css create mode 100644 hodor/static/css/styles.css create mode 100644 hodor/static/img/hodor.png create mode 100644 hodor/static/js/app.js create mode 100644 hodor/static/js/modals.js create mode 100644 hodor/static/js/particles.js create mode 100644 hodor/static/particles.json create mode 100644 hodor/templates/index/index.html delete mode 100644 hodor/templates/layout/layout.html create mode 100644 hodor/templates/layout/navigation.html delete mode 100644 hodor/templates/printer/index.html delete mode 100644 hodor/templates/printer/print.html diff --git a/hodor/controllers/__init__.pyc b/hodor/controllers/__init__.pyc deleted file mode 100644 index a2297423541c3db4b85e110ae010eb8dd50e2ac7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 347 zcmZSn%*!Pib3QVe0SZ_c7#JKF7#ND<7#J8*7#LC*8FCmHqTp;shA2jcbOwf0Musd# zhExWIEGC95W`<N2hGs^F6eb4oW<~~=SQ&;WR+uCkLn<p+l9@pvj)|erf+30>WNfeo z$ga%)|NsB@D`sV2V9?jnE2zx;`~Uxc4Gsndh7u+Q28R6N5|FC&octs(qad*)ql6vg zw9KNs#N5;pkjnV@w9K5;`1le=1_p*SuuxKBaVl6Iq&7Z2F()TJUIXMs1W{}cvNIz; zH&wqlJ25x0BtyTTC_gJTxujS>BR?g-NIyA0B^A!hD=Es)$w@6L){l?R%*!l^kJl@x c1lwhko1apelWGUDy_k)Gfq{pShmn~P03e=D#{d8T diff --git a/hodor/controllers/index.py b/hodor/controllers/index.py new file mode 100644 index 0000000..44296a4 --- /dev/null +++ b/hodor/controllers/index.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +from hodor import app +from flask import render_template, request +from flask_wtf import FlaskForm +from wtforms import StringField +from wtforms.validators import DataRequired + + +class CreateForm(FlaskForm): + text = StringField('name', validators=[DataRequired()]) + + +@app.route('/') +def start(): + return render_template('index/index.html') + diff --git a/hodor/controllers/printer.py b/hodor/controllers/printer.py deleted file mode 100644 index 0e16da9..0000000 --- a/hodor/controllers/printer.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -from hodor import app -from flask import render_template, request -from flask_wtf import FlaskForm -from wtforms import StringField -from wtforms.validators import DataRequired - - -class CreateForm(FlaskForm): - text = StringField('name', validators=[DataRequired()]) - - -@app.route('/') -def start(): - return render_template('printer/index.html') - - -@app.route('/print', methods=['GET', 'POST']) -def printer(): - form = CreateForm(request.form) - if request.method == 'POST' and form.validate(): - from hodor.models.Printer import Printer - printer = Printer() - printer.show_string(form.text.data) - return render_template('printer/index.html') - return render_template('printer/print.html', form=form) diff --git a/hodor/controllers/printer.pyc b/hodor/controllers/printer.pyc deleted file mode 100644 index ea6819b1d2dcb1e3da2e1a69e339c9444584ba74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1503 zcmZSn%*$n!d_FRn0SZ_d7#JKF7#NDzFfcHrFfgPrGUPBY<T5fuF)}cM_)H8rObofq z3{lJsxhxD(ED%v<h8$LgTsDR%HVB`EA%~qImxCdS1Hxxz$l+wj<zk59Vqi>RV@PFV zNMmG3VP|MzU}$Dwh>YT9NM&Tm;$cYPU}$D!NZ|xaFfv5(!o;~4Qn(pXco<T68Pb^; zni&~W_+V=I7*hBdf;9vf7#K4D|NsAAgOP!Op@f-%fg!P=K!XXy;b&lAC`!#sNiB*m zNzE<DNi0b%VF!y9mZlb$Ky+|2Ffh2~Bo=48<rn2bgt!?P7=lZRGV{{iGE;L>Ac8y$ z3=A%bC5b_)g{7HAsVOB~3=9m;MX8A;sUV&3pk!fSU~mEjr2+#3Ln;F(1XG!yVVcSe z@^?BT$R|-O3_-yVcY?I!CFZ7rjVw#d$xKNs$uBC_0L4lP2Ll5`d^|`xJ|3(fK0Y@; zr8FlsK0XMfF$k;*#41UxDA52#D1s=qV_;y=&&bbB)i2IY%uOuG&@U*;&q_@$Db~-( zPsuORPtH$Cg){R?it=-EQj3c93yL!HN>YpT3Mzxx7#J8pfm93%Q#QsDP&n(uy$cd_ z26-1093|kC)6B>K@t9w+5Ca1P)F}PTyp+@my^NCF9B_aJfy_a;6wIQ6b4x(MQCyN( zRKg2#707uEOvNBSK>P$w0J*6p8Tl#2;MC&o8d3rZy#W8<5U{U6NeCnW_EiBW9WgMJ zFfwF;(jP-Dgv|`fA=yj}MF|Ww3=CN;plB^hU`SzNNP*>vT1E!O8b**rEfYfx6GIj| zSSbfX7AGjNGnQ~Mq_BWk!5|hZLkb&6zL}9RSOb(s{esX^Hb^i45-T`@6-5{v>fq1@ z`z{TXxIyU}9GyX+U<m?6P6;SvAi)7nY0%V{S|Y;0zyMAmdb#;2sX4`ZP`iT!K_LP% zsW>CQJiZv5O@cstustcD90HD6P%wh6fam}@AMB>oB5+iL2`a>QkOTt*1IQ=Ee4wPy z#Lp<rD8R_cD9p&k=%>LCax5rCfV~m~QUOjNX`l=bPJ!T{C;_E!uvmO~Nm>xd>ELuy zUIGfYVsJhy0a*eS(1Qk3eo-+v`+)-$Y;aM2X-R4jDCvP62KFU_pn`wFv19`&0qj80 T2==!CqZp$A2r`SYNU#C`9F0TZ diff --git a/hodor/models/Printer.pyc b/hodor/models/Printer.pyc deleted file mode 100644 index d32f52d671695991007c380483dd1f059fad3196..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 687 zcmZSn%*!Pib3QVe0ScHI7#JKF7#NDR7#J8*7#LC*8FCmHav2$-7#SE-m>5!-7}6LS zQkWT97#Nxv7$T#X8B$mnf;Ctf7#K4D|NsAAgOP!Op#;QD%SkNGC}C${U<fG6%qvMP zf?EPo;smlpkb!|Al>uaS3IoW*C?<xWV6X|vObiSRAPjPlGf1sA0|P@1BgjG7ObkVm z3?&Q<DNGE_j0}u<d>{@;j+sFmB#^?u5Ujz%z`)>F0`gX|5(5K6WPYhaN@hx)dWk|R z$T13ud6fz!sTCy(CHV?qrxt^(QdCp~+aCndr~z_73CN)0)SNUh1EfO(EC(Wrtr-{? z^fU5vQ}v6p6LS+wGV}|I^0QKtON#X~@>BAQ^po>bQek5Hx%nxnImP<W;Lt0mEa3+E zEF-@>zPO|)GcO$!SjB80lNos!d6_goE-K+*U|@)k&r8frjgK$k0&{ZnQ%ZAE<Ku%s z;f!z&m_@0Zf<UnYGPfAydp0INa7e;qG#eZ;B_K!UCxLtlRu8rrK~U-ju%B%pzO(~5 J1MC(7W&joZl?wm> diff --git a/hodor/models/__init__.pyc b/hodor/models/__init__.pyc deleted file mode 100644 index a72112d105cd02ad89fe253f200a059151aec919..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmZSn%*!Pib3QVe0SXuy7#JKF7#NCK7#J8*7#M;zKq7t`AZawB*oJ|DK|douH&wql zJ25x0BtyTTC_gJTxujS>BR?g-NIyA0B^4&7pPQeOnp3PFAD@|*SrQ+wS5R5P!N9;^ RlbfGXnv-e=vZfeh3jp!HAs_$% diff --git a/hodor/models/Printer.py b/hodor/models/index.py similarity index 100% rename from hodor/models/Printer.py rename to hodor/models/index.py diff --git a/hodor/static/css/style.css b/hodor/static/css/style.css deleted file mode 100644 index dcbbde0..0000000 --- a/hodor/static/css/style.css +++ /dev/null @@ -1,71 +0,0 @@ -body { - font-family: sans-serif; - background: #eee; -} - -a,h1,h2 { - color: #377BA8; -} - -h1,h2 { - font-family: 'Georgia', serif; - margin: 0; -} - -h1 { - border-bottom: 2px solid #eee; -} - -h2 { - font-size: 1.2em; -} - -.page { - margin: 2em auto; - width: 35em; - border: 5px solid #ccc; - padding: 0.8em; - background: white; -} - -.entries { - list-style: none; - margin: 0; - padding: 0; -} - -.entries li { - margin: 0.8em 1.2em; -} - -.entries li h2 { - margin-left: -1em; -} - -.add-entry { - font-size: 0.9em; - border-bottom: 1px solid #ccc; -} - -.add-entry dl { - font-weight: bold; -} - -.metanav { - text-align: right; - font-size: 0.8em; - padding: 0.3em; - margin-bottom: 1em; - background: #fafafa; -} - -.flash { - background: #CEE5F5; - padding: 0.5em; - border: 1px solid #AACBE2; -} - -.error { - background: #F0D6D6; - padding: 0.5em; -} \ No newline at end of file diff --git a/hodor/static/css/styles.css b/hodor/static/css/styles.css new file mode 100644 index 0000000..00ddb18 --- /dev/null +++ b/hodor/static/css/styles.css @@ -0,0 +1,587 @@ +html { + background-color: #111111 !important; +} +body { + height: 100%; + background-color: #111111 !important; + height: 99vh; + position: relative; +} + +canvas { + display:block; + position: fixed; +} + +li { + list-style:none !important; + +} +.container-fluid{ + height: 100%; +} + +.nav-hodor { + float: left !important; +} + +.content { + height: 99vh !important; + max-height: 90% !important; +} + +.img-block { + display: inline-block; +} + +/* -------------------------------- + +Primary style + +-------------------------------- */ +html * { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +*, *:after, *:before { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +body { + font-size: 100%; + font-family: "PT Sans", sans-serif; + color: #505260; + background-color: #fff; +} + +a { + color: #2f889a; + text-decoration: none; +} + +img { + max-width: 100%; +} + +input, textarea { + font-family: "PT Sans", sans-serif; + font-size: 16px; + font-size: 1rem; +} +input::-ms-clear, textarea::-ms-clear { + display: none; +} + +/* -------------------------------- + +Main components + +-------------------------------- */ +header[role=banner] { + position: relative; + height: 50px; + background: #343642; +} +header[role=banner] #cd-logo { + float: left; + margin: 4px 0 0 5%; + /* reduce logo size on mobile and make sure it is left aligned with the transform-origin property */ + -webkit-transform-origin: 0 50%; + -moz-transform-origin: 0 50%; + -ms-transform-origin: 0 50%; + -o-transform-origin: 0 50%; + transform-origin: 0 50%; + -webkit-transform: scale(0.8); + -moz-transform: scale(0.8); + -ms-transform: scale(0.8); + -o-transform: scale(0.8); + transform: scale(0.8); +} +header[role=banner] #cd-logo img { + display: block; +} +header[role=banner]::after { + /* clearfix */ + content: ''; + display: table; + clear: both; +} +@media only screen and (min-width: 768px) { + header[role=banner] { + height: 80px; + } + header[role=banner] #cd-logo { + margin: 20px 0 0 5%; + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } +} + +.main-nav { + float: right; + margin-right: 5%; + width: 44px; + height: 100%; + background: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/148866/cd-icon-menu.svg") no-repeat center center; + cursor: pointer; +} +.main-nav ul { + position: absolute; + top: 0; + left: 0; + width: 100%; + -webkit-transform: translateY(-100%); + -moz-transform: translateY(-100%); + -ms-transform: translateY(-100%); + -o-transform: translateY(-100%); + transform: translateY(-100%); +} +.main-nav ul.is-visible { + -webkit-transform: translateY(50px); + -moz-transform: translateY(50px); + -ms-transform: translateY(50px); + -o-transform: translateY(50px); + transform: translateY(50px); +} +.main-nav a { + display: block; + height: 50px; + line-height: 50px; + padding-left: 5%; + background: #292a34; + border-top: 1px solid #3b3d4b; + color: #FFF; +} +@media only screen and (min-width: 768px) { + .main-nav { + width: auto; + height: auto; + background: none; + cursor: auto; + } + .main-nav ul { + position: static; + width: auto; + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + transform: translateY(0); + line-height: 80px; + } + .main-nav ul.is-visible { + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + transform: translateY(0); + } + .main-nav li { + display: inline-block; + margin-left: 1em; + } + .main-nav li:nth-last-child(2) { + margin-left: 2em; + } + .main-nav a { + display: inline-block; + height: auto; + line-height: normal; + background: transparent; + } + .main-nav a.cd-signin, .main-nav a.cd-signup { + padding: .6em 1em; + border: 1px solid rgba(255, 255, 255, 0.6); + border-radius: 50em; + } + .main-nav a.cd-signup { + background: #2f889a; + border: none; + } +} + +/* -------------------------------- + +xsigin/signup popup + +-------------------------------- */ +.cd-user-modal { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(52, 54, 66, 0.9); + z-index: 3; + overflow-y: auto; + cursor: pointer; + visibility: hidden; + opacity: 0; + -webkit-transition: opacity 0.3s 0, visibility 0 0.3s; + -moz-transition: opacity 0.3s 0, visibility 0 0.3s; + transition: opacity 0.3s 0, visibility 0 0.3s; +} +.cd-user-modal.is-visible { + visibility: visible; + opacity: 1; + -webkit-transition: opacity 0.3s 0, visibility 0 0; + -moz-transition: opacity 0.3s 0, visibility 0 0; + transition: opacity 0.3s 0, visibility 0 0; +} +.cd-user-modal.is-visible .cd-user-modal-container { + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + transform: translateY(0); +} + +.cd-user-modal-container { + position: relative; + width: 90%; + max-width: 600px; + background: #FFF; + margin: 3em auto 4em; + cursor: auto; + border-radius: 0.25em; + -webkit-transform: translateY(-30px); + -moz-transform: translateY(-30px); + -ms-transform: translateY(-30px); + -o-transform: translateY(-30px); + transform: translateY(-30px); + -webkit-transition-property: -webkit-transform; + -moz-transition-property: -moz-transform; + transition-property: transform; + -webkit-transition-duration: 0.3s; + -moz-transition-duration: 0.3s; + transition-duration: 0.3s; +} +.cd-user-modal-container .cd-switcher::after { + clear: both; + content: ""; + display: table; +} +.cd-user-modal-container .cd-switcher li { + width: 50%; + float: left; + text-align: center; +} +.cd-user-modal-container .cd-switcher li:first-child a { + border-radius: .25em 0 0 0; +} +.cd-user-modal-container .cd-switcher li:last-child a { + border-radius: 0 .25em 0 0; +} +.cd-user-modal-container .cd-switcher a { + display: block; + width: 100%; + height: 50px; + line-height: 50px; + background: #d2d8d8; + color: #809191; +} +.cd-user-modal-container .cd-switcher a.selected { + background: #FFF; + color: #505260; +} +@media only screen and (min-width: 600px) { + .cd-user-modal-container { + margin: 4em auto; + } + .cd-user-modal-container .cd-switcher a { + height: 70px; + line-height: 70px; + } +} + +.cd-form { + padding: 1.4em; +} +.cd-form .fieldset { + position: relative; + margin: 1.4em 0; +} +.cd-form .fieldset:first-child { + margin-top: 0; +} +.cd-form .fieldset:last-child { + margin-bottom: 0; +} +.cd-form label { + font-size: 14px; + font-size: 0.875rem; +} +.cd-form label.image-replace { + /* replace text with an icon */ + display: inline-block; + position: absolute; + left: 15px; + top: 50%; + bottom: auto; + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + -ms-transform: translateY(-50%); + -o-transform: translateY(-50%); + transform: translateY(-50%); + height: 20px; + width: 20px; + overflow: hidden; + text-indent: 100%; + white-space: nowrap; + color: transparent; + text-shadow: none; + background-repeat: no-repeat; + background-position: 50% 0; +} +.cd-form label.cd-username { + background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/148866/cd-icon-username.svg"); +} +.cd-form label.cd-email { + background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/148866/cd-icon-email.svg"); +} +.cd-form label.cd-password { + background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/148866/cd-icon-password.svg"); +} +.cd-form input { + margin: 0; + padding: 0; + border-radius: 0.25em; +} +.cd-form input.full-width { + width: 100%; +} +.cd-form input.has-padding { + padding: 12px 20px 12px 50px; +} +.cd-form input.has-border { + border: 1px solid #d2d8d8; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; +} +.cd-form input.has-border:focus { + border-color: #343642; + box-shadow: 0 0 5px rgba(52, 54, 66, 0.1); + outline: none; +} +.cd-form input.has-error { + border: 1px solid #d76666; +} +.cd-form input[type=password] { + /* space left for the HIDE button */ + padding-right: 65px; +} +.cd-form input[type=submit] { + padding: 16px 0; + cursor: pointer; + background: #2f889a; + color: #FFF; + font-weight: bold; + border: none; + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + -o-appearance: none; + appearance: none; +} +.no-touch .cd-form input[type=submit]:hover, .no-touch .cd-form input[type=submit]:focus { + background: #3599ae; + outline: none; +} +.cd-form .hide-password { + display: inline-block; + position: absolute; + right: 0; + top: 0; + padding: 6px 15px; + border-left: 1px solid #d2d8d8; + top: 50%; + bottom: auto; + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + -ms-transform: translateY(-50%); + -o-transform: translateY(-50%); + transform: translateY(-50%); + font-size: 14px; + font-size: 0.875rem; + color: #343642; +} +.cd-form .cd-error-message { + display: inline-block; + position: absolute; + left: -5px; + bottom: -35px; + background: rgba(215, 102, 102, 0.9); + padding: .8em; + z-index: 2; + color: #FFF; + font-size: 13px; + font-size: 0.8125rem; + border-radius: 0.25em; + /* prevent click and touch events */ + pointer-events: none; + visibility: hidden; + opacity: 0; + -webkit-transition: opacity 0.2s 0, visibility 0 0.2s; + -moz-transition: opacity 0.2s 0, visibility 0 0.2s; + transition: opacity 0.2s 0, visibility 0 0.2s; +} +.cd-form .cd-error-message::after { + /* triangle */ + content: ''; + position: absolute; + left: 22px; + bottom: 100%; + height: 0; + width: 0; + border-bottom: 8px solid rgba(215, 102, 102, 0.9); + border-left: 8px solid transparent; + border-right: 8px solid transparent; +} +.cd-form .cd-error-message.is-visible { + opacity: 1; + visibility: visible; + -webkit-transition: opacity 0.2s 0, visibility 0 0; + -moz-transition: opacity 0.2s 0, visibility 0 0; + transition: opacity 0.2s 0, visibility 0 0; +} +@media only screen and (min-width: 600px) { + .cd-form { + padding: 2em; + } + .cd-form .fieldset { + margin: 2em 0; + } + .cd-form .fieldset:first-child { + margin-top: 0; + } + .cd-form .fieldset:last-child { + margin-bottom: 0; + } + .cd-form input.has-padding { + padding: 16px 20px 16px 50px; + } + .cd-form input[type=submit] { + padding: 16px 0; + } +} + +.cd-form-message { + padding: 1.4em 1.4em 0; + font-size: 14px; + font-size: 0.875rem; + line-height: 1.4; + text-align: center; +} +@media only screen and (min-width: 600px) { + .cd-form-message { + padding: 2em 2em 0; + } +} + +.cd-form-bottom-message { + position: absolute; + width: 100%; + left: 0; + bottom: -30px; + text-align: center; + font-size: 14px; + font-size: 0.875rem; +} +.cd-form-bottom-message a { + color: #FFF; + text-decoration: underline; +} + +.cd-close-form { + /* form X button on top right */ + display: block; + position: absolute; + width: 40px; + height: 40px; + right: 0; + top: -40px; + background: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/148866/cd-icon-close.svg") no-repeat center center; + text-indent: 100%; + white-space: nowrap; + overflow: hidden; +} +@media only screen and (min-width: 1170px) { + .cd-close-form { + display: none; + } +} + +#cd-login, #cd-signup, #cd-reset-password { + display: none; +} + +#cd-login.is-selected, #cd-signup.is-selected, #cd-reset-password.is-selected { + display: block; +} + + +.abs { + position: absolute; + text-align: center; + width: 100%; + height: 90%; + z-index: 1; +} + +#caption { + height: fit-content; + z-index: 1; + margin-right: auto; + margin-left: auto; + margin-top: 4em; + font-family: Lato, sans-serif; + font-weight: 100; + font-size : 70px; + color: white; +} + +#subtitle { + z-index: 1; + height: fit-content; + width: fit-content; + margin-left: auto; + margin-right: auto; + margin-top: 18em; + font-family: Lato, sans-serif; + font-size : 20px; + color: white; +} + + +#logo { + z-index: 1; + margin-right: auto; + margin-left: auto; + margin-top: 6em; + color: white; +} + +#version { + z-index: 1; + font-size: 40px; + color: orange; + font-weight: 300; +} + +#more { + height: 8%; + margin-right: auto; + margin-left: auto; + margin-top: 30em; + color: white; + z-index: 1; +} diff --git a/hodor/static/img/hodor.png b/hodor/static/img/hodor.png new file mode 100644 index 0000000000000000000000000000000000000000..8c7932c709f7e13c9d9d65504d2771fe2adcc6c1 GIT binary patch literal 84837 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 z[<NlL*pxO^4Qe715uXVuztDa9x-Wy6gJI_oc8*<y75O;%psyen%WHy`(%ZB~0} zSLthZOC@IknT-}_LE*q4;@5JaZ*RtwDN~j_e*XOWkAHuE=f1nU`}(xycbb}-a#$t? zzG_j>k#Kq6EVN7alyIkuQudV<6YaaX^L%HSd^|f-JW9k*o&l7l^4WKD*2HfSw$y(7 z=#fsugaXgfc}3#9=Zm>{dDkj)aBt=LlCYk&y!Xn=VD&9=d#eswezr+Hn3$X_d}W#M zY@In`44?#eYPw66<d#|dD?_qGWMpDMjhC>LlqIIySFBhewP(&|Jw?TZML|K6EXyBH z+3K-z!v>EvpwY8?VQZtdO5}l>-^qy+l}%cvbvSb?*f20S?0xX!jEw%t?1`tJTIo1^ zGIQK9gX=YK#f^M7w>CxddFL}@3a4%^-?t9bj$9qGQs}(W;;OH&ie!Wq<h@vM$Ap1_ zf#DQ)NC*>%(ZUWQLB=vLFhD7g*BKbVA;7=@DhU}FK+((qr$D}9U;ulLfdN#iF))DB hJ&bCw`t+ZPhrw_1;#J>wHarH|;OXk;vd$@?2>?Ta=2-v$ literal 0 HcmV?d00001 diff --git a/hodor/static/js/app.js b/hodor/static/js/app.js new file mode 100644 index 0000000..f09419e --- /dev/null +++ b/hodor/static/js/app.js @@ -0,0 +1,4 @@ +/* particlesJS.load(@dom-id, @path-json, @callback (optional)); */ +particlesJS.load('particles-js', '/static/particles.json', function() { + console.log('callback - particles.js config loaded'); +}); diff --git a/hodor/static/js/modals.js b/hodor/static/js/modals.js new file mode 100644 index 0000000..ebb4835 --- /dev/null +++ b/hodor/static/js/modals.js @@ -0,0 +1,152 @@ +/*! modernizr 3.5.0 (Custom Build) | MIT * + * https://modernizr.com/download/?-input-setclasses !*/ +!function(e,n,t){function s(e,n){return typeof e===n}function a(){var e,n,t,a,o,i,f;for(var c in r)if(r.hasOwnProperty(c)){if(e=[],n=r[c],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(t=0;t<n.options.aliases.length;t++)e.push(n.options.aliases[t].toLowerCase());for(a=s(n.fn,"function")?n.fn():n.fn,o=0;o<e.length;o++)i=e[o],f=i.split("."),1===f.length?Modernizr[f[0]]=a:(!Modernizr[f[0]]||Modernizr[f[0]]instanceof Boolean||(Modernizr[f[0]]=new Boolean(Modernizr[f[0]])),Modernizr[f[0]][f[1]]=a),l.push((a?"":"no-")+f.join("-"))}}function o(e){var n=c.className,t=Modernizr._config.classPrefix||"";if(u&&(n=n.baseVal),Modernizr._config.enableJSClass){var s=new RegExp("(^|\\s)"+t+"no-js(\\s|$)");n=n.replace(s,"$1"+t+"js$2")}Modernizr._config.enableClasses&&(n+=" "+t+e.join(" "+t),u?c.className.baseVal=n:c.className=n)}function i(){return"function"!=typeof n.createElement?n.createElement(arguments[0]):u?n.createElementNS.call(n,"http://www.w3.org/2000/svg",arguments[0]):n.createElement.apply(n,arguments)}var l=[],r=[],f={_version:"3.5.0",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,n){var t=this;setTimeout(function(){n(t[e])},0)},addTest:function(e,n,t){r.push({name:e,fn:n,options:t})},addAsyncTest:function(e){r.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=f,Modernizr=new Modernizr;var c=n.documentElement,u="svg"===c.nodeName.toLowerCase(),p=i("input"),m="autocomplete autofocus list placeholder max min multiple pattern required step".split(" "),d={};Modernizr.input=function(n){for(var t=0,s=n.length;s>t;t++)d[n[t]]=!!(n[t]in p);return d.list&&(d.list=!(!i("datalist")||!e.HTMLDataListElement)),d}(m),a(),o(l),delete f.addTest,delete f.addAsyncTest;for(var g=0;g<Modernizr._q.length;g++)Modernizr._q[g]();e.Modernizr=Modernizr}(window,document); + + +jQuery(document).ready(function($){ + var $form_modal = $('.cd-user-modal'), + $form_login = $form_modal.find('#cd-login'), + $form_signup = $form_modal.find('#cd-signup'), + $form_forgot_password = $form_modal.find('#cd-reset-password'), + $form_modal_tab = $('.cd-switcher'), + $tab_login = $form_modal_tab.children('li').eq(0).children('a'), + $tab_signup = $form_modal_tab.children('li').eq(1).children('a'), + $forgot_password_link = $form_login.find('.cd-form-bottom-message a'), + $back_to_login_link = $form_forgot_password.find('.cd-form-bottom-message a'), + $main_nav = $('.hodor-nav'); + + //open modal + $main_nav.on('click', function(event){ + + if( $(event.target).is($main_nav) ) { + // on mobile open the submenu + $(this).children('ul').toggleClass('is-visible'); + } else { + // on mobile close submenu + $main_nav.children('ul').removeClass('is-visible'); + //show modal layer + $form_modal.addClass('is-visible'); + //show the selected form + ( $(event.target).is('.cd-signup') ) ? signup_selected() : login_selected(); + } + + }); + + //close modal + $('.cd-user-modal').on('click', function(event){ + if( $(event.target).is($form_modal) || $(event.target).is('.cd-close-form') ) { + $form_modal.removeClass('is-visible'); + } + }); + //close modal when clicking the esc keyboard button + $(document).keyup(function(event){ + if(event.which=='27'){ + $form_modal.removeClass('is-visible'); + } + }); + + //switch from a tab to another + $form_modal_tab.on('click', function(event) { + event.preventDefault(); + ( $(event.target).is( $tab_login ) ) ? login_selected() : signup_selected(); + }); + + //hide or show password + $('.hide-password').on('click', function(){ + var $this= $(this), + $password_field = $this.prev('input'); + + ( 'password' == $password_field.attr('type') ) ? $password_field.attr('type', 'text') : $password_field.attr('type', 'password'); + ( 'Hide' == $this.text() ) ? $this.text('Show') : $this.text('Hide'); + //focus and move cursor to the end of input field + $password_field.putCursorAtEnd(); + }); + + //show forgot-password form + $forgot_password_link.on('click', function(event){ + event.preventDefault(); + forgot_password_selected(); + }); + + //back to login from the forgot-password form + $back_to_login_link.on('click', function(event){ + event.preventDefault(); + login_selected(); + }); + + function login_selected(){ + $form_login.addClass('is-selected'); + $form_signup.removeClass('is-selected'); + $form_forgot_password.removeClass('is-selected'); + $tab_login.addClass('selected'); + $tab_signup.removeClass('selected'); + } + + function signup_selected(){ + $form_login.removeClass('is-selected'); + $form_signup.addClass('is-selected'); + $form_forgot_password.removeClass('is-selected'); + $tab_login.removeClass('selected'); + $tab_signup.addClass('selected'); + } + + function forgot_password_selected(){ + $form_login.removeClass('is-selected'); + $form_signup.removeClass('is-selected'); + $form_forgot_password.addClass('is-selected'); + } + + //REMOVE THIS - it's just to show error messages + $form_login.find('input[type="submit"]').on('click', function(event){ + event.preventDefault(); + $form_login.find('input[type="email"]').toggleClass('has-error').next('span').toggleClass('is-visible'); + }); + $form_signup.find('input[type="submit"]').on('click', function(event){ + event.preventDefault(); + $form_signup.find('input[type="email"]').toggleClass('has-error').next('span').toggleClass('is-visible'); + }); + + + //IE9 placeholder fallback + //credits http://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html + if(!Modernizr.input.placeholder){ + $('[placeholder]').focus(function() { + var input = $(this); + if (input.val() == input.attr('placeholder')) { + input.val(''); + } + }).blur(function() { + var input = $(this); + if (input.val() == '' || input.val() == input.attr('placeholder')) { + input.val(input.attr('placeholder')); + } + }).blur(); + $('[placeholder]').parents('form').submit(function() { + $(this).find('[placeholder]').each(function() { + var input = $(this); + if (input.val() == input.attr('placeholder')) { + input.val(''); + } + }) + }); + } + +}); + + +//credits https://css-tricks.com/snippets/jquery/move-cursor-to-end-of-textarea-or-input/ +jQuery.fn.putCursorAtEnd = function() { + return this.each(function() { + // If this function exists... + if (this.setSelectionRange) { + // ... then use it (Doesn't work in IE) + // Double the length because Opera is inconsistent about whether a carriage return is one character or two. Sigh. + var len = $(this).val().length * 2; + this.setSelectionRange(len, len); + } else { + // ... otherwise replace the contents with itself + // (Doesn't work in Google Chrome) + $(this).val($(this).val()); + } + }); +}; \ No newline at end of file diff --git a/hodor/static/js/particles.js b/hodor/static/js/particles.js new file mode 100644 index 0000000..c599dd1 --- /dev/null +++ b/hodor/static/js/particles.js @@ -0,0 +1,1541 @@ +/* ----------------------------------------------- +/* Author : Vincent Garreau - vincentgarreau.com +/* MIT license: http://opensource.org/licenses/MIT +/* Demo / Generator : vincentgarreau.com/particles.js +/* GitHub : github.com/VincentGarreau/particles.js +/* How to use? : Check the GitHub README +/* v2.0.0 +/* ----------------------------------------------- */ + +var pJS = function(tag_id, params){ + + var canvas_el = document.querySelector('#'+tag_id+' > .particles-js-canvas-el'); + + /* particles.js variables with default values */ + this.pJS = { + canvas: { + el: canvas_el, + w: canvas_el.offsetWidth, + h: canvas_el.offsetHeight + }, + particles: { + number: { + value: 400, + density: { + enable: true, + value_area: 800 + } + }, + color: { + value: '#fff' + }, + shape: { + type: 'circle', + stroke: { + width: 0, + color: '#ff0000' + }, + polygon: { + nb_sides: 5 + }, + image: { + src: '', + width: 100, + height: 100 + } + }, + opacity: { + value: 1, + random: false, + anim: { + enable: false, + speed: 2, + opacity_min: 0, + sync: false + } + }, + size: { + value: 20, + random: false, + anim: { + enable: false, + speed: 20, + size_min: 0, + sync: false + } + }, + line_linked: { + enable: true, + distance: 100, + color: '#fff', + opacity: 1, + width: 1 + }, + move: { + enable: true, + speed: 2, + direction: 'none', + random: false, + straight: false, + out_mode: 'out', + bounce: false, + attract: { + enable: false, + rotateX: 3000, + rotateY: 3000 + } + }, + array: [] + }, + interactivity: { + detect_on: 'canvas', + events: { + onhover: { + enable: true, + mode: 'grab' + }, + onclick: { + enable: true, + mode: 'push' + }, + resize: true + }, + modes: { + grab:{ + distance: 100, + line_linked:{ + opacity: 1 + } + }, + bubble:{ + distance: 200, + size: 80, + duration: 0.4 + }, + repulse:{ + distance: 200, + duration: 0.4 + }, + push:{ + particles_nb: 4 + }, + remove:{ + particles_nb: 2 + } + }, + mouse:{} + }, + retina_detect: false, + fn: { + interact: {}, + modes: {}, + vendors:{} + }, + tmp: {} + }; + + var pJS = this.pJS; + + /* params settings */ + if(params){ + Object.deepExtend(pJS, params); + } + + pJS.tmp.obj = { + size_value: pJS.particles.size.value, + size_anim_speed: pJS.particles.size.anim.speed, + move_speed: pJS.particles.move.speed, + line_linked_distance: pJS.particles.line_linked.distance, + line_linked_width: pJS.particles.line_linked.width, + mode_grab_distance: pJS.interactivity.modes.grab.distance, + mode_bubble_distance: pJS.interactivity.modes.bubble.distance, + mode_bubble_size: pJS.interactivity.modes.bubble.size, + mode_repulse_distance: pJS.interactivity.modes.repulse.distance + }; + + + pJS.fn.retinaInit = function(){ + + if(pJS.retina_detect && window.devicePixelRatio > 1){ + pJS.canvas.pxratio = window.devicePixelRatio; + pJS.tmp.retina = true; + } + else{ + pJS.canvas.pxratio = 1; + pJS.tmp.retina = false; + } + + pJS.canvas.w = pJS.canvas.el.offsetWidth * pJS.canvas.pxratio; + pJS.canvas.h = pJS.canvas.el.offsetHeight * pJS.canvas.pxratio; + + pJS.particles.size.value = pJS.tmp.obj.size_value * pJS.canvas.pxratio; + pJS.particles.size.anim.speed = pJS.tmp.obj.size_anim_speed * pJS.canvas.pxratio; + pJS.particles.move.speed = pJS.tmp.obj.move_speed * pJS.canvas.pxratio; + pJS.particles.line_linked.distance = pJS.tmp.obj.line_linked_distance * pJS.canvas.pxratio; + pJS.interactivity.modes.grab.distance = pJS.tmp.obj.mode_grab_distance * pJS.canvas.pxratio; + pJS.interactivity.modes.bubble.distance = pJS.tmp.obj.mode_bubble_distance * pJS.canvas.pxratio; + pJS.particles.line_linked.width = pJS.tmp.obj.line_linked_width * pJS.canvas.pxratio; + pJS.interactivity.modes.bubble.size = pJS.tmp.obj.mode_bubble_size * pJS.canvas.pxratio; + pJS.interactivity.modes.repulse.distance = pJS.tmp.obj.mode_repulse_distance * pJS.canvas.pxratio; + + }; + + + + /* ---------- pJS functions - canvas ------------ */ + + pJS.fn.canvasInit = function(){ + pJS.canvas.ctx = pJS.canvas.el.getContext('2d'); + }; + + pJS.fn.canvasSize = function(){ + + pJS.canvas.el.width = pJS.canvas.w; + pJS.canvas.el.height = pJS.canvas.h; + + if(pJS && pJS.interactivity.events.resize){ + + window.addEventListener('resize', function(){ + + pJS.canvas.w = pJS.canvas.el.offsetWidth; + pJS.canvas.h = pJS.canvas.el.offsetHeight; + + /* resize canvas */ + if(pJS.tmp.retina){ + pJS.canvas.w *= pJS.canvas.pxratio; + pJS.canvas.h *= pJS.canvas.pxratio; + } + + pJS.canvas.el.width = pJS.canvas.w; + pJS.canvas.el.height = pJS.canvas.h; + + /* repaint canvas on anim disabled */ + if(!pJS.particles.move.enable){ + pJS.fn.particlesEmpty(); + pJS.fn.particlesCreate(); + pJS.fn.particlesDraw(); + pJS.fn.vendors.densityAutoParticles(); + } + + /* density particles enabled */ + pJS.fn.vendors.densityAutoParticles(); + + }); + + } + + }; + + + pJS.fn.canvasPaint = function(){ + pJS.canvas.ctx.fillRect(0, 0, pJS.canvas.w, pJS.canvas.h); + }; + + pJS.fn.canvasClear = function(){ + pJS.canvas.ctx.clearRect(0, 0, pJS.canvas.w, pJS.canvas.h); + }; + + + /* --------- pJS functions - particles ----------- */ + + pJS.fn.particle = function(color, opacity, position){ + + /* size */ + this.radius = (pJS.particles.size.random ? Math.random() : 1) * pJS.particles.size.value; + if(pJS.particles.size.anim.enable){ + this.size_status = false; + this.vs = pJS.particles.size.anim.speed / 100; + if(!pJS.particles.size.anim.sync){ + this.vs = this.vs * Math.random(); + } + } + + /* position */ + this.x = position ? position.x : Math.random() * pJS.canvas.w; + this.y = position ? position.y : Math.random() * pJS.canvas.h; + + /* check position - into the canvas */ + if(this.x > pJS.canvas.w - this.radius*2) this.x = this.x - this.radius; + else if(this.x < this.radius*2) this.x = this.x + this.radius; + if(this.y > pJS.canvas.h - this.radius*2) this.y = this.y - this.radius; + else if(this.y < this.radius*2) this.y = this.y + this.radius; + + /* check position - avoid overlap */ + if(pJS.particles.move.bounce){ + pJS.fn.vendors.checkOverlap(this, position); + } + + /* color */ + this.color = {}; + if(typeof(color.value) == 'object'){ + + if(color.value instanceof Array){ + var color_selected = color.value[Math.floor(Math.random() * pJS.particles.color.value.length)]; + this.color.rgb = hexToRgb(color_selected); + }else{ + if(color.value.r != undefined && color.value.g != undefined && color.value.b != undefined){ + this.color.rgb = { + r: color.value.r, + g: color.value.g, + b: color.value.b + } + } + if(color.value.h != undefined && color.value.s != undefined && color.value.l != undefined){ + this.color.hsl = { + h: color.value.h, + s: color.value.s, + l: color.value.l + } + } + } + + } + else if(color.value == 'random'){ + this.color.rgb = { + r: (Math.floor(Math.random() * (255 - 0 + 1)) + 0), + g: (Math.floor(Math.random() * (255 - 0 + 1)) + 0), + b: (Math.floor(Math.random() * (255 - 0 + 1)) + 0) + } + } + else if(typeof(color.value) == 'string'){ + this.color = color; + this.color.rgb = hexToRgb(this.color.value); + } + + /* opacity */ + this.opacity = (pJS.particles.opacity.random ? Math.random() : 1) * pJS.particles.opacity.value; + if(pJS.particles.opacity.anim.enable){ + this.opacity_status = false; + this.vo = pJS.particles.opacity.anim.speed / 100; + if(!pJS.particles.opacity.anim.sync){ + this.vo = this.vo * Math.random(); + } + } + + /* animation - velocity for speed */ + var velbase = {} + switch(pJS.particles.move.direction){ + case 'top': + velbase = { x:0, y:-1 }; + break; + case 'top-right': + velbase = { x:0.5, y:-0.5 }; + break; + case 'right': + velbase = { x:1, y:-0 }; + break; + case 'bottom-right': + velbase = { x:0.5, y:0.5 }; + break; + case 'bottom': + velbase = { x:0, y:1 }; + break; + case 'bottom-left': + velbase = { x:-0.5, y:1 }; + break; + case 'left': + velbase = { x:-1, y:0 }; + break; + case 'top-left': + velbase = { x:-0.5, y:-0.5 }; + break; + default: + velbase = { x:0, y:0 }; + break; + } + + if(pJS.particles.move.straight){ + this.vx = velbase.x; + this.vy = velbase.y; + if(pJS.particles.move.random){ + this.vx = this.vx * (Math.random()); + this.vy = this.vy * (Math.random()); + } + }else{ + this.vx = velbase.x + Math.random()-0.5; + this.vy = velbase.y + Math.random()-0.5; + } + + // var theta = 2.0 * Math.PI * Math.random(); + // this.vx = Math.cos(theta); + // this.vy = Math.sin(theta); + + this.vx_i = this.vx; + this.vy_i = this.vy; + + + + /* if shape is image */ + + var shape_type = pJS.particles.shape.type; + if(typeof(shape_type) == 'object'){ + if(shape_type instanceof Array){ + var shape_selected = shape_type[Math.floor(Math.random() * shape_type.length)]; + this.shape = shape_selected; + } + }else{ + this.shape = shape_type; + } + + if(this.shape == 'image'){ + var sh = pJS.particles.shape; + this.img = { + src: sh.image.src, + ratio: sh.image.width / sh.image.height + } + if(!this.img.ratio) this.img.ratio = 1; + if(pJS.tmp.img_type == 'svg' && pJS.tmp.source_svg != undefined){ + pJS.fn.vendors.createSvgImg(this); + if(pJS.tmp.pushing){ + this.img.loaded = false; + } + } + } + + + + }; + + + pJS.fn.particle.prototype.draw = function() { + + var p = this; + + if(p.radius_bubble != undefined){ + var radius = p.radius_bubble; + }else{ + var radius = p.radius; + } + + if(p.opacity_bubble != undefined){ + var opacity = p.opacity_bubble; + }else{ + var opacity = p.opacity; + } + + if(p.color.rgb){ + var color_value = 'rgba('+p.color.rgb.r+','+p.color.rgb.g+','+p.color.rgb.b+','+opacity+')'; + }else{ + var color_value = 'hsla('+p.color.hsl.h+','+p.color.hsl.s+'%,'+p.color.hsl.l+'%,'+opacity+')'; + } + + pJS.canvas.ctx.fillStyle = color_value; + pJS.canvas.ctx.beginPath(); + + switch(p.shape){ + + case 'circle': + pJS.canvas.ctx.arc(p.x, p.y, radius, 0, Math.PI * 2, false); + break; + + case 'edge': + pJS.canvas.ctx.rect(p.x-radius, p.y-radius, radius*2, radius*2); + break; + + case 'triangle': + pJS.fn.vendors.drawShape(pJS.canvas.ctx, p.x-radius, p.y+radius / 1.66, radius*2, 3, 2); + break; + + case 'polygon': + pJS.fn.vendors.drawShape( + pJS.canvas.ctx, + p.x - radius / (pJS.particles.shape.polygon.nb_sides/3.5), // startX + p.y - radius / (2.66/3.5), // startY + radius*2.66 / (pJS.particles.shape.polygon.nb_sides/3), // sideLength + pJS.particles.shape.polygon.nb_sides, // sideCountNumerator + 1 // sideCountDenominator + ); + break; + + case 'star': + pJS.fn.vendors.drawShape( + pJS.canvas.ctx, + p.x - radius*2 / (pJS.particles.shape.polygon.nb_sides/4), // startX + p.y - radius / (2*2.66/3.5), // startY + radius*2*2.66 / (pJS.particles.shape.polygon.nb_sides/3), // sideLength + pJS.particles.shape.polygon.nb_sides, // sideCountNumerator + 2 // sideCountDenominator + ); + break; + + case 'image': + + function draw(){ + pJS.canvas.ctx.drawImage( + img_obj, + p.x-radius, + p.y-radius, + radius*2, + radius*2 / p.img.ratio + ); + } + + if(pJS.tmp.img_type == 'svg'){ + var img_obj = p.img.obj; + }else{ + var img_obj = pJS.tmp.img_obj; + } + + if(img_obj){ + draw(); + } + + break; + + } + + pJS.canvas.ctx.closePath(); + + if(pJS.particles.shape.stroke.width > 0){ + pJS.canvas.ctx.strokeStyle = pJS.particles.shape.stroke.color; + pJS.canvas.ctx.lineWidth = pJS.particles.shape.stroke.width; + pJS.canvas.ctx.stroke(); + } + + pJS.canvas.ctx.fill(); + + }; + + + pJS.fn.particlesCreate = function(){ + for(var i = 0; i < pJS.particles.number.value; i++) { + pJS.particles.array.push(new pJS.fn.particle(pJS.particles.color, pJS.particles.opacity.value)); + } + }; + + pJS.fn.particlesUpdate = function(){ + + for(var i = 0; i < pJS.particles.array.length; i++){ + + /* the particle */ + var p = pJS.particles.array[i]; + + // var d = ( dx = pJS.interactivity.mouse.click_pos_x - p.x ) * dx + ( dy = pJS.interactivity.mouse.click_pos_y - p.y ) * dy; + // var f = -BANG_SIZE / d; + // if ( d < BANG_SIZE ) { + // var t = Math.atan2( dy, dx ); + // p.vx = f * Math.cos(t); + // p.vy = f * Math.sin(t); + // } + + /* move the particle */ + if(pJS.particles.move.enable){ + var ms = pJS.particles.move.speed/2; + p.x += p.vx * ms; + p.y += p.vy * ms; + } + + /* change opacity status */ + if(pJS.particles.opacity.anim.enable) { + if(p.opacity_status == true) { + if(p.opacity >= pJS.particles.opacity.value) p.opacity_status = false; + p.opacity += p.vo; + }else { + if(p.opacity <= pJS.particles.opacity.anim.opacity_min) p.opacity_status = true; + p.opacity -= p.vo; + } + if(p.opacity < 0) p.opacity = 0; + } + + /* change size */ + if(pJS.particles.size.anim.enable){ + if(p.size_status == true){ + if(p.radius >= pJS.particles.size.value) p.size_status = false; + p.radius += p.vs; + }else{ + if(p.radius <= pJS.particles.size.anim.size_min) p.size_status = true; + p.radius -= p.vs; + } + if(p.radius < 0) p.radius = 0; + } + + /* change particle position if it is out of canvas */ + if(pJS.particles.move.out_mode == 'bounce'){ + var new_pos = { + x_left: p.radius, + x_right: pJS.canvas.w, + y_top: p.radius, + y_bottom: pJS.canvas.h + } + }else{ + var new_pos = { + x_left: -p.radius, + x_right: pJS.canvas.w + p.radius, + y_top: -p.radius, + y_bottom: pJS.canvas.h + p.radius + } + } + + if(p.x - p.radius > pJS.canvas.w){ + p.x = new_pos.x_left; + p.y = Math.random() * pJS.canvas.h; + } + else if(p.x + p.radius < 0){ + p.x = new_pos.x_right; + p.y = Math.random() * pJS.canvas.h; + } + if(p.y - p.radius > pJS.canvas.h){ + p.y = new_pos.y_top; + p.x = Math.random() * pJS.canvas.w; + } + else if(p.y + p.radius < 0){ + p.y = new_pos.y_bottom; + p.x = Math.random() * pJS.canvas.w; + } + + /* out of canvas modes */ + switch(pJS.particles.move.out_mode){ + case 'bounce': + if (p.x + p.radius > pJS.canvas.w) p.vx = -p.vx; + else if (p.x - p.radius < 0) p.vx = -p.vx; + if (p.y + p.radius > pJS.canvas.h) p.vy = -p.vy; + else if (p.y - p.radius < 0) p.vy = -p.vy; + break; + } + + /* events */ + if(isInArray('grab', pJS.interactivity.events.onhover.mode)){ + pJS.fn.modes.grabParticle(p); + } + + if(isInArray('bubble', pJS.interactivity.events.onhover.mode) || isInArray('bubble', pJS.interactivity.events.onclick.mode)){ + pJS.fn.modes.bubbleParticle(p); + } + + if(isInArray('repulse', pJS.interactivity.events.onhover.mode) || isInArray('repulse', pJS.interactivity.events.onclick.mode)){ + pJS.fn.modes.repulseParticle(p); + } + + /* interaction auto between particles */ + if(pJS.particles.line_linked.enable || pJS.particles.move.attract.enable){ + for(var j = i + 1; j < pJS.particles.array.length; j++){ + var p2 = pJS.particles.array[j]; + + /* link particles */ + if(pJS.particles.line_linked.enable){ + pJS.fn.interact.linkParticles(p,p2); + } + + /* attract particles */ + if(pJS.particles.move.attract.enable){ + pJS.fn.interact.attractParticles(p,p2); + } + + /* bounce particles */ + if(pJS.particles.move.bounce){ + pJS.fn.interact.bounceParticles(p,p2); + } + + } + } + + + } + + }; + + pJS.fn.particlesDraw = function(){ + + /* clear canvas */ + pJS.canvas.ctx.clearRect(0, 0, pJS.canvas.w, pJS.canvas.h); + + /* update each particles param */ + pJS.fn.particlesUpdate(); + + /* draw each particle */ + for(var i = 0; i < pJS.particles.array.length; i++){ + var p = pJS.particles.array[i]; + p.draw(); + } + + }; + + pJS.fn.particlesEmpty = function(){ + pJS.particles.array = []; + }; + + pJS.fn.particlesRefresh = function(){ + + /* init all */ + cancelRequestAnimFrame(pJS.fn.checkAnimFrame); + cancelRequestAnimFrame(pJS.fn.drawAnimFrame); + pJS.tmp.source_svg = undefined; + pJS.tmp.img_obj = undefined; + pJS.tmp.count_svg = 0; + pJS.fn.particlesEmpty(); + pJS.fn.canvasClear(); + + /* restart */ + pJS.fn.vendors.start(); + + }; + + + /* ---------- pJS functions - particles interaction ------------ */ + + pJS.fn.interact.linkParticles = function(p1, p2){ + + var dx = p1.x - p2.x, + dy = p1.y - p2.y, + dist = Math.sqrt(dx*dx + dy*dy); + + /* draw a line between p1 and p2 if the distance between them is under the config distance */ + if(dist <= pJS.particles.line_linked.distance){ + + var opacity_line = pJS.particles.line_linked.opacity - (dist / (1/pJS.particles.line_linked.opacity)) / pJS.particles.line_linked.distance; + + if(opacity_line > 0){ + + /* style */ + var color_line = pJS.particles.line_linked.color_rgb_line; + pJS.canvas.ctx.strokeStyle = 'rgba('+color_line.r+','+color_line.g+','+color_line.b+','+opacity_line+')'; + pJS.canvas.ctx.lineWidth = pJS.particles.line_linked.width; + //pJS.canvas.ctx.lineCap = 'round'; /* performance issue */ + + /* path */ + pJS.canvas.ctx.beginPath(); + pJS.canvas.ctx.moveTo(p1.x, p1.y); + pJS.canvas.ctx.lineTo(p2.x, p2.y); + pJS.canvas.ctx.stroke(); + pJS.canvas.ctx.closePath(); + + } + + } + + }; + + + pJS.fn.interact.attractParticles = function(p1, p2){ + + /* condensed particles */ + var dx = p1.x - p2.x, + dy = p1.y - p2.y, + dist = Math.sqrt(dx*dx + dy*dy); + + if(dist <= pJS.particles.line_linked.distance){ + + var ax = dx/(pJS.particles.move.attract.rotateX*1000), + ay = dy/(pJS.particles.move.attract.rotateY*1000); + + p1.vx -= ax; + p1.vy -= ay; + + p2.vx += ax; + p2.vy += ay; + + } + + + } + + + pJS.fn.interact.bounceParticles = function(p1, p2){ + + var dx = p1.x - p2.x, + dy = p1.y - p2.y, + dist = Math.sqrt(dx*dx + dy*dy), + dist_p = p1.radius+p2.radius; + + if(dist <= dist_p){ + p1.vx = -p1.vx; + p1.vy = -p1.vy; + + p2.vx = -p2.vx; + p2.vy = -p2.vy; + } + + } + + + /* ---------- pJS functions - modes events ------------ */ + + pJS.fn.modes.pushParticles = function(nb, pos){ + + pJS.tmp.pushing = true; + + for(var i = 0; i < nb; i++){ + pJS.particles.array.push( + new pJS.fn.particle( + pJS.particles.color, + pJS.particles.opacity.value, + { + 'x': pos ? pos.pos_x : Math.random() * pJS.canvas.w, + 'y': pos ? pos.pos_y : Math.random() * pJS.canvas.h + } + ) + ) + if(i == nb-1){ + if(!pJS.particles.move.enable){ + pJS.fn.particlesDraw(); + } + pJS.tmp.pushing = false; + } + } + + }; + + + pJS.fn.modes.removeParticles = function(nb){ + + pJS.particles.array.splice(0, nb); + if(!pJS.particles.move.enable){ + pJS.fn.particlesDraw(); + } + + }; + + + pJS.fn.modes.bubbleParticle = function(p){ + + /* on hover event */ + if(pJS.interactivity.events.onhover.enable && isInArray('bubble', pJS.interactivity.events.onhover.mode)){ + + var dx_mouse = p.x - pJS.interactivity.mouse.pos_x, + dy_mouse = p.y - pJS.interactivity.mouse.pos_y, + dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse), + ratio = 1 - dist_mouse / pJS.interactivity.modes.bubble.distance; + + function init(){ + p.opacity_bubble = p.opacity; + p.radius_bubble = p.radius; + } + + /* mousemove - check ratio */ + if(dist_mouse <= pJS.interactivity.modes.bubble.distance){ + + if(ratio >= 0 && pJS.interactivity.status == 'mousemove'){ + + /* size */ + if(pJS.interactivity.modes.bubble.size != pJS.particles.size.value){ + + if(pJS.interactivity.modes.bubble.size > pJS.particles.size.value){ + var size = p.radius + (pJS.interactivity.modes.bubble.size*ratio); + if(size >= 0){ + p.radius_bubble = size; + } + }else{ + var dif = p.radius - pJS.interactivity.modes.bubble.size, + size = p.radius - (dif*ratio); + if(size > 0){ + p.radius_bubble = size; + }else{ + p.radius_bubble = 0; + } + } + + } + + /* opacity */ + if(pJS.interactivity.modes.bubble.opacity != pJS.particles.opacity.value){ + + if(pJS.interactivity.modes.bubble.opacity > pJS.particles.opacity.value){ + var opacity = pJS.interactivity.modes.bubble.opacity*ratio; + if(opacity > p.opacity && opacity <= pJS.interactivity.modes.bubble.opacity){ + p.opacity_bubble = opacity; + } + }else{ + var opacity = p.opacity - (pJS.particles.opacity.value-pJS.interactivity.modes.bubble.opacity)*ratio; + if(opacity < p.opacity && opacity >= pJS.interactivity.modes.bubble.opacity){ + p.opacity_bubble = opacity; + } + } + + } + + } + + }else{ + init(); + } + + + /* mouseleave */ + if(pJS.interactivity.status == 'mouseleave'){ + init(); + } + + } + + /* on click event */ + else if(pJS.interactivity.events.onclick.enable && isInArray('bubble', pJS.interactivity.events.onclick.mode)){ + + + if(pJS.tmp.bubble_clicking){ + var dx_mouse = p.x - pJS.interactivity.mouse.click_pos_x, + dy_mouse = p.y - pJS.interactivity.mouse.click_pos_y, + dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse), + time_spent = (new Date().getTime() - pJS.interactivity.mouse.click_time)/1000; + + if(time_spent > pJS.interactivity.modes.bubble.duration){ + pJS.tmp.bubble_duration_end = true; + } + + if(time_spent > pJS.interactivity.modes.bubble.duration*2){ + pJS.tmp.bubble_clicking = false; + pJS.tmp.bubble_duration_end = false; + } + } + + + function process(bubble_param, particles_param, p_obj_bubble, p_obj, id){ + + if(bubble_param != particles_param){ + + if(!pJS.tmp.bubble_duration_end){ + if(dist_mouse <= pJS.interactivity.modes.bubble.distance){ + if(p_obj_bubble != undefined) var obj = p_obj_bubble; + else var obj = p_obj; + if(obj != bubble_param){ + var value = p_obj - (time_spent * (p_obj - bubble_param) / pJS.interactivity.modes.bubble.duration); + if(id == 'size') p.radius_bubble = value; + if(id == 'opacity') p.opacity_bubble = value; + } + }else{ + if(id == 'size') p.radius_bubble = undefined; + if(id == 'opacity') p.opacity_bubble = undefined; + } + }else{ + if(p_obj_bubble != undefined){ + var value_tmp = p_obj - (time_spent * (p_obj - bubble_param) / pJS.interactivity.modes.bubble.duration), + dif = bubble_param - value_tmp; + value = bubble_param + dif; + if(id == 'size') p.radius_bubble = value; + if(id == 'opacity') p.opacity_bubble = value; + } + } + + } + + } + + if(pJS.tmp.bubble_clicking){ + /* size */ + process(pJS.interactivity.modes.bubble.size, pJS.particles.size.value, p.radius_bubble, p.radius, 'size'); + /* opacity */ + process(pJS.interactivity.modes.bubble.opacity, pJS.particles.opacity.value, p.opacity_bubble, p.opacity, 'opacity'); + } + + } + + }; + + + pJS.fn.modes.repulseParticle = function(p){ + + if(pJS.interactivity.events.onhover.enable && isInArray('repulse', pJS.interactivity.events.onhover.mode) && pJS.interactivity.status == 'mousemove') { + + var dx_mouse = p.x - pJS.interactivity.mouse.pos_x, + dy_mouse = p.y - pJS.interactivity.mouse.pos_y, + dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse); + + var normVec = {x: dx_mouse/dist_mouse, y: dy_mouse/dist_mouse}, + repulseRadius = pJS.interactivity.modes.repulse.distance, + velocity = 100, + repulseFactor = clamp((1/repulseRadius)*(-1*Math.pow(dist_mouse/repulseRadius,2)+1)*repulseRadius*velocity, 0, 50); + + var pos = { + x: p.x + normVec.x * repulseFactor, + y: p.y + normVec.y * repulseFactor + } + + if(pJS.particles.move.out_mode == 'bounce'){ + if(pos.x - p.radius > 0 && pos.x + p.radius < pJS.canvas.w) p.x = pos.x; + if(pos.y - p.radius > 0 && pos.y + p.radius < pJS.canvas.h) p.y = pos.y; + }else{ + p.x = pos.x; + p.y = pos.y; + } + + } + + + else if(pJS.interactivity.events.onclick.enable && isInArray('repulse', pJS.interactivity.events.onclick.mode)) { + + if(!pJS.tmp.repulse_finish){ + pJS.tmp.repulse_count++; + if(pJS.tmp.repulse_count == pJS.particles.array.length){ + pJS.tmp.repulse_finish = true; + } + } + + if(pJS.tmp.repulse_clicking){ + + var repulseRadius = Math.pow(pJS.interactivity.modes.repulse.distance/6, 3); + + var dx = pJS.interactivity.mouse.click_pos_x - p.x, + dy = pJS.interactivity.mouse.click_pos_y - p.y, + d = dx*dx + dy*dy; + + var force = -repulseRadius / d * 1; + + function process(){ + + var f = Math.atan2(dy,dx); + p.vx = force * Math.cos(f); + p.vy = force * Math.sin(f); + + if(pJS.particles.move.out_mode == 'bounce'){ + var pos = { + x: p.x + p.vx, + y: p.y + p.vy + } + if (pos.x + p.radius > pJS.canvas.w) p.vx = -p.vx; + else if (pos.x - p.radius < 0) p.vx = -p.vx; + if (pos.y + p.radius > pJS.canvas.h) p.vy = -p.vy; + else if (pos.y - p.radius < 0) p.vy = -p.vy; + } + + } + + // default + if(d <= repulseRadius){ + process(); + } + + // bang - slow motion mode + // if(!pJS.tmp.repulse_finish){ + // if(d <= repulseRadius){ + // process(); + // } + // }else{ + // process(); + // } + + + }else{ + + if(pJS.tmp.repulse_clicking == false){ + + p.vx = p.vx_i; + p.vy = p.vy_i; + + } + + } + + } + + } + + + pJS.fn.modes.grabParticle = function(p){ + + if(pJS.interactivity.events.onhover.enable && pJS.interactivity.status == 'mousemove'){ + + var dx_mouse = p.x - pJS.interactivity.mouse.pos_x, + dy_mouse = p.y - pJS.interactivity.mouse.pos_y, + dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse); + + /* draw a line between the cursor and the particle if the distance between them is under the config distance */ + if(dist_mouse <= pJS.interactivity.modes.grab.distance){ + + var opacity_line = pJS.interactivity.modes.grab.line_linked.opacity - (dist_mouse / (1/pJS.interactivity.modes.grab.line_linked.opacity)) / pJS.interactivity.modes.grab.distance; + + if(opacity_line > 0){ + + /* style */ + var color_line = pJS.particles.line_linked.color_rgb_line; + pJS.canvas.ctx.strokeStyle = 'rgba('+color_line.r+','+color_line.g+','+color_line.b+','+opacity_line+')'; + pJS.canvas.ctx.lineWidth = pJS.particles.line_linked.width; + //pJS.canvas.ctx.lineCap = 'round'; /* performance issue */ + + /* path */ + pJS.canvas.ctx.beginPath(); + pJS.canvas.ctx.moveTo(p.x, p.y); + pJS.canvas.ctx.lineTo(pJS.interactivity.mouse.pos_x, pJS.interactivity.mouse.pos_y); + pJS.canvas.ctx.stroke(); + pJS.canvas.ctx.closePath(); + + } + + } + + } + + }; + + + + /* ---------- pJS functions - vendors ------------ */ + + pJS.fn.vendors.eventsListeners = function(){ + + /* events target element */ + if(pJS.interactivity.detect_on == 'window'){ + pJS.interactivity.el = window; + }else{ + pJS.interactivity.el = pJS.canvas.el; + } + + + /* detect mouse pos - on hover / click event */ + if(pJS.interactivity.events.onhover.enable || pJS.interactivity.events.onclick.enable){ + + /* el on mousemove */ + pJS.interactivity.el.addEventListener('mousemove', function(e){ + + if(pJS.interactivity.el == window){ + var pos_x = e.clientX, + pos_y = e.clientY; + } + else{ + var pos_x = e.offsetX || e.clientX, + pos_y = e.offsetY || e.clientY; + } + + pJS.interactivity.mouse.pos_x = pos_x; + pJS.interactivity.mouse.pos_y = pos_y; + + if(pJS.tmp.retina){ + pJS.interactivity.mouse.pos_x *= pJS.canvas.pxratio; + pJS.interactivity.mouse.pos_y *= pJS.canvas.pxratio; + } + + pJS.interactivity.status = 'mousemove'; + + }); + + /* el on onmouseleave */ + pJS.interactivity.el.addEventListener('mouseleave', function(e){ + + pJS.interactivity.mouse.pos_x = null; + pJS.interactivity.mouse.pos_y = null; + pJS.interactivity.status = 'mouseleave'; + + }); + + } + + /* on click event */ + if(pJS.interactivity.events.onclick.enable){ + + pJS.interactivity.el.addEventListener('click', function(){ + + pJS.interactivity.mouse.click_pos_x = pJS.interactivity.mouse.pos_x; + pJS.interactivity.mouse.click_pos_y = pJS.interactivity.mouse.pos_y; + pJS.interactivity.mouse.click_time = new Date().getTime(); + + if(pJS.interactivity.events.onclick.enable){ + + switch(pJS.interactivity.events.onclick.mode){ + + case 'push': + if(pJS.particles.move.enable){ + pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb, pJS.interactivity.mouse); + }else{ + if(pJS.interactivity.modes.push.particles_nb == 1){ + pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb, pJS.interactivity.mouse); + } + else if(pJS.interactivity.modes.push.particles_nb > 1){ + pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb); + } + } + break; + + case 'remove': + pJS.fn.modes.removeParticles(pJS.interactivity.modes.remove.particles_nb); + break; + + case 'bubble': + pJS.tmp.bubble_clicking = true; + break; + + case 'repulse': + pJS.tmp.repulse_clicking = true; + pJS.tmp.repulse_count = 0; + pJS.tmp.repulse_finish = false; + setTimeout(function(){ + pJS.tmp.repulse_clicking = false; + }, pJS.interactivity.modes.repulse.duration*1000) + break; + + } + + } + + }); + + } + + + }; + + pJS.fn.vendors.densityAutoParticles = function(){ + + if(pJS.particles.number.density.enable){ + + /* calc area */ + var area = pJS.canvas.el.width * pJS.canvas.el.height / 1000; + if(pJS.tmp.retina){ + area = area/(pJS.canvas.pxratio*2); + } + + /* calc number of particles based on density area */ + var nb_particles = area * pJS.particles.number.value / pJS.particles.number.density.value_area; + + /* add or remove X particles */ + var missing_particles = pJS.particles.array.length - nb_particles; + if(missing_particles < 0) pJS.fn.modes.pushParticles(Math.abs(missing_particles)); + else pJS.fn.modes.removeParticles(missing_particles); + + } + + }; + + + pJS.fn.vendors.checkOverlap = function(p1, position){ + for(var i = 0; i < pJS.particles.array.length; i++){ + var p2 = pJS.particles.array[i]; + + var dx = p1.x - p2.x, + dy = p1.y - p2.y, + dist = Math.sqrt(dx*dx + dy*dy); + + if(dist <= p1.radius + p2.radius){ + p1.x = position ? position.x : Math.random() * pJS.canvas.w; + p1.y = position ? position.y : Math.random() * pJS.canvas.h; + pJS.fn.vendors.checkOverlap(p1); + } + } + }; + + + pJS.fn.vendors.createSvgImg = function(p){ + + /* set color to svg element */ + var svgXml = pJS.tmp.source_svg, + rgbHex = /#([0-9A-F]{3,6})/gi, + coloredSvgXml = svgXml.replace(rgbHex, function (m, r, g, b) { + if(p.color.rgb){ + var color_value = 'rgba('+p.color.rgb.r+','+p.color.rgb.g+','+p.color.rgb.b+','+p.opacity+')'; + }else{ + var color_value = 'hsla('+p.color.hsl.h+','+p.color.hsl.s+'%,'+p.color.hsl.l+'%,'+p.opacity+')'; + } + return color_value; + }); + + /* prepare to create img with colored svg */ + var svg = new Blob([coloredSvgXml], {type: 'image/svg+xml;charset=utf-8'}), + DOMURL = window.URL || window.webkitURL || window, + url = DOMURL.createObjectURL(svg); + + /* create particle img obj */ + var img = new Image(); + img.addEventListener('load', function(){ + p.img.obj = img; + p.img.loaded = true; + DOMURL.revokeObjectURL(url); + pJS.tmp.count_svg++; + }); + img.src = url; + + }; + + + pJS.fn.vendors.destroypJS = function(){ + cancelAnimationFrame(pJS.fn.drawAnimFrame); + canvas_el.remove(); + pJSDom = null; + }; + + + pJS.fn.vendors.drawShape = function(c, startX, startY, sideLength, sideCountNumerator, sideCountDenominator){ + + // By Programming Thomas - https://programmingthomas.wordpress.com/2013/04/03/n-sided-shapes/ + var sideCount = sideCountNumerator * sideCountDenominator; + var decimalSides = sideCountNumerator / sideCountDenominator; + var interiorAngleDegrees = (180 * (decimalSides - 2)) / decimalSides; + var interiorAngle = Math.PI - Math.PI * interiorAngleDegrees / 180; // convert to radians + c.save(); + c.beginPath(); + c.translate(startX, startY); + c.moveTo(0,0); + for (var i = 0; i < sideCount; i++) { + c.lineTo(sideLength,0); + c.translate(sideLength,0); + c.rotate(interiorAngle); + } + //c.stroke(); + c.fill(); + c.restore(); + + }; + + pJS.fn.vendors.exportImg = function(){ + window.open(pJS.canvas.el.toDataURL('image/png'), '_blank'); + }; + + + pJS.fn.vendors.loadImg = function(type){ + + pJS.tmp.img_error = undefined; + + if(pJS.particles.shape.image.src != ''){ + + if(type == 'svg'){ + + var xhr = new XMLHttpRequest(); + xhr.open('GET', pJS.particles.shape.image.src); + xhr.onreadystatechange = function (data) { + if(xhr.readyState == 4){ + if(xhr.status == 200){ + pJS.tmp.source_svg = data.currentTarget.response; + pJS.fn.vendors.checkBeforeDraw(); + }else{ + console.log('Error pJS - Image not found'); + pJS.tmp.img_error = true; + } + } + } + xhr.send(); + + }else{ + + var img = new Image(); + img.addEventListener('load', function(){ + pJS.tmp.img_obj = img; + pJS.fn.vendors.checkBeforeDraw(); + }); + img.src = pJS.particles.shape.image.src; + + } + + }else{ + console.log('Error pJS - No image.src'); + pJS.tmp.img_error = true; + } + + }; + + + pJS.fn.vendors.draw = function(){ + + if(pJS.particles.shape.type == 'image'){ + + if(pJS.tmp.img_type == 'svg'){ + + if(pJS.tmp.count_svg >= pJS.particles.number.value){ + pJS.fn.particlesDraw(); + if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame); + else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); + }else{ + //console.log('still loading...'); + if(!pJS.tmp.img_error) pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); + } + + }else{ + + if(pJS.tmp.img_obj != undefined){ + pJS.fn.particlesDraw(); + if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame); + else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); + }else{ + if(!pJS.tmp.img_error) pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); + } + + } + + }else{ + pJS.fn.particlesDraw(); + if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame); + else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw); + } + + }; + + + pJS.fn.vendors.checkBeforeDraw = function(){ + + // if shape is image + if(pJS.particles.shape.type == 'image'){ + + if(pJS.tmp.img_type == 'svg' && pJS.tmp.source_svg == undefined){ + pJS.tmp.checkAnimFrame = requestAnimFrame(check); + }else{ + //console.log('images loaded! cancel check'); + cancelRequestAnimFrame(pJS.tmp.checkAnimFrame); + if(!pJS.tmp.img_error){ + pJS.fn.vendors.init(); + pJS.fn.vendors.draw(); + } + + } + + }else{ + pJS.fn.vendors.init(); + pJS.fn.vendors.draw(); + } + + }; + + + pJS.fn.vendors.init = function(){ + + /* init canvas + particles */ + pJS.fn.retinaInit(); + pJS.fn.canvasInit(); + pJS.fn.canvasSize(); + pJS.fn.canvasPaint(); + pJS.fn.particlesCreate(); + pJS.fn.vendors.densityAutoParticles(); + + /* particles.line_linked - convert hex colors to rgb */ + pJS.particles.line_linked.color_rgb_line = hexToRgb(pJS.particles.line_linked.color); + + }; + + + pJS.fn.vendors.start = function(){ + + if(isInArray('image', pJS.particles.shape.type)){ + pJS.tmp.img_type = pJS.particles.shape.image.src.substr(pJS.particles.shape.image.src.length - 3); + pJS.fn.vendors.loadImg(pJS.tmp.img_type); + }else{ + pJS.fn.vendors.checkBeforeDraw(); + } + + }; + + + + + /* ---------- pJS - start ------------ */ + + + pJS.fn.vendors.eventsListeners(); + + pJS.fn.vendors.start(); + + + +}; + +/* ---------- global functions - vendors ------------ */ + +Object.deepExtend = function(destination, source) { + for (var property in source) { + if (source[property] && source[property].constructor && + source[property].constructor === Object) { + destination[property] = destination[property] || {}; + arguments.callee(destination[property], source[property]); + } else { + destination[property] = source[property]; + } + } + return destination; +}; + +window.requestAnimFrame = (function(){ + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(callback){ + window.setTimeout(callback, 1000 / 60); + }; +})(); + +window.cancelRequestAnimFrame = ( function() { + return window.cancelAnimationFrame || + window.webkitCancelRequestAnimationFrame || + window.mozCancelRequestAnimationFrame || + window.oCancelRequestAnimationFrame || + window.msCancelRequestAnimationFrame || + clearTimeout +} )(); + +function hexToRgb(hex){ + // By Tim Down - http://stackoverflow.com/a/5624139/3493650 + // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF") + var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; + hex = hex.replace(shorthandRegex, function(m, r, g, b) { + return r + r + g + g + b + b; + }); + var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + return result ? { + r: parseInt(result[1], 16), + g: parseInt(result[2], 16), + b: parseInt(result[3], 16) + } : null; +}; + +function clamp(number, min, max) { + return Math.min(Math.max(number, min), max); +}; + +function isInArray(value, array) { + return array.indexOf(value) > -1; +} + + +/* ---------- particles.js functions - start ------------ */ + +window.pJSDom = []; + +window.particlesJS = function(tag_id, params){ + + //console.log(params); + + /* no string id? so it's object params, and set the id with default id */ + if(typeof(tag_id) != 'string'){ + params = tag_id; + tag_id = 'particles-js'; + } + + /* no id? set the id to default id */ + if(!tag_id){ + tag_id = 'particles-js'; + } + + /* pJS elements */ + var pJS_tag = document.getElementById(tag_id), + pJS_canvas_class = 'particles-js-canvas-el', + exist_canvas = pJS_tag.getElementsByClassName(pJS_canvas_class); + + /* remove canvas if exists into the pJS target tag */ + if(exist_canvas.length){ + while(exist_canvas.length > 0){ + pJS_tag.removeChild(exist_canvas[0]); + } + } + + /* create canvas element */ + var canvas_el = document.createElement('canvas'); + canvas_el.className = pJS_canvas_class; + + /* set size canvas */ + canvas_el.style.width = "100%"; + canvas_el.style.height = "100%"; + + /* append canvas */ + var canvas = document.getElementById(tag_id).appendChild(canvas_el); + + /* launch particle.js */ + if(canvas != null){ + pJSDom.push(new pJS(tag_id, params)); + } + +}; + +window.particlesJS.load = function(tag_id, path_config_json, callback){ + + /* load json config */ + var xhr = new XMLHttpRequest(); + xhr.open('GET', path_config_json); + xhr.onreadystatechange = function (data) { + if(xhr.readyState == 4){ + if(xhr.status == 200){ + var params = JSON.parse(data.currentTarget.response); + window.particlesJS(tag_id, params); + if(callback) callback(); + }else{ + console.log('Error pJS - XMLHttpRequest status: '+xhr.status); + console.log('Error pJS - File config not found'); + } + } + }; + xhr.send(); + +}; \ No newline at end of file diff --git a/hodor/static/particles.json b/hodor/static/particles.json new file mode 100644 index 0000000..7573576 --- /dev/null +++ b/hodor/static/particles.json @@ -0,0 +1,110 @@ +{ + "particles": { + "number": { + "value": 50, + "density": { + "enable": true, + "value_area": 800 + } + }, + "color": { + "value": "#ffc400" + }, + "shape": { + "type": "circle", + "stroke": { + "width": 0, + "color": "#000000" + }, + "polygon": { + "nb_sides": 5 + }, + "image": { + "src": "img/github.svg", + "width": 100, + "height": 100 + } + }, + "opacity": { + "value": 0.5, + "random": false, + "anim": { + "enable": false, + "speed": 1, + "opacity_min": 0.1, + "sync": false + } + }, + "size": { + "value": 3, + "random": true, + "anim": { + "enable": true, + "speed": 10, + "size_min": 0.1, + "sync": false + } + }, + "line_linked": { + "enable": true, + "distance": 150, + "color": "#ffffff", + "opacity": 0.4, + "width": 1 + }, + "move": { + "enable": true, + "speed": 5, + "direction": "none", + "random": true, + "straight": false, + "out_mode": "bounce", + "bounce": false, + "attract": { + "enable": true, + "rotateX": 600, + "rotateY": 1200 + } + } + }, + "interactivity": { + "detect_on": "window", + "events": { + "onhover": { + "enable": false, + "mode": "repulse" + }, + "onclick": { + "enable": true, + "mode": "repulse" + }, + "resize": true + }, + "modes": { + "grab": { + "distance": 400, + "line_linked": { + "opacity": 1 + } + }, + "bubble": { + "distance": 400, + "size": 40, + "duration": 2, + "opacity": 8, + "speed": 3 + }, + "repulse": { + "distance": 200, + "duration": 0.4 + }, + "push": { + "particles_nb": 4 + }, + "remove": { + "particles_nb": 2 + } + } + }, + "retina_detect": true +} diff --git a/hodor/templates/index/index.html b/hodor/templates/index/index.html new file mode 100644 index 0000000..3ed12c1 --- /dev/null +++ b/hodor/templates/index/index.html @@ -0,0 +1,38 @@ +<!DOCTYPE html> +<html> + <head> + <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script> + <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script> + <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script> + <script src="{{ url_for('static', filename='js/particles.js') }}"></script> + <script src="{{ url_for('static', filename='js/modals.js') }}"></script> + <script> + particlesJS.load('particles-js', '/static/particles.json', function() { + console.log('callback - particles.js config loaded'); + }); + </script> + <link rel="stylesheet" href="{{ url_for('static', filename='css/styles.css') }}"> + <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous"> + <link href="https://fonts.googleapis.com/css?family=Lato:300,100" rel="stylesheet"> + <title> Hodor Security Training</title> + </head> + <body> + {% include 'layout/navigation.html' %} + <div id="particles-js" class="container-fluid content"> + <div class="row text-center abs"> + <img id="logo" src="{{ url_for('static', filename='img/hodor.png') }}" width="150" height="180"> + </div> + <div class="row text-center abs"> + <h2 id="caption"> Hodor <span id="version">v.0.0.1 alpha</span></h2> + </div> + <div class="row text-center abs"> + <pre id="subtitle"> Hodor is an open-sourced, cyber-security training and practice platform designed for beginners. + Hodor is currently in alpha development stage + </pre> + </div> + <div class="row text-center abs"> + <button id="more" class="btn btn-outline-danger">Know More</button> + </div> + </div> + </body> +</html> diff --git a/hodor/templates/layout/layout.html b/hodor/templates/layout/layout.html deleted file mode 100644 index 9636093..0000000 --- a/hodor/templates/layout/layout.html +++ /dev/null @@ -1,21 +0,0 @@ -<!doctype html> - <head> - <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/style.css') }}"> - <title>Flask-MVC</title> - </head> - <body> - <a style="text-align:center" href="{{ url_for('start') }}">Home</a> - <div class="page"> - <h1>Flask MVC Boilerplate</h1> - {% for message in get_flashed_messages() %} - <div class="flash">{{ message }}</div> - {% endfor %} - {% macro render_error(field) %} - {% if field.errors %} - {% for error in field.errors %}<span class='error'>{{ error }}</span>{% endfor %} - {% endif %} - {% endmacro %} - {% block body %}{% endblock %} - </div> - </body> -</html> diff --git a/hodor/templates/layout/navigation.html b/hodor/templates/layout/navigation.html new file mode 100644 index 0000000..c80baee --- /dev/null +++ b/hodor/templates/layout/navigation.html @@ -0,0 +1,116 @@ +<nav class="navbar navbar-expand-lg navbar-dark bg-dark justify-content-between hodor-nav" style="background-color:#101010;"> + <div class="container-fluid"> + <div class="row"> + <a class="navbar-brand nav-hodor float-sm-left" href="#"> + <img src="{{ url_for('static', filename='img/hodor.png') }}" width="25" class="d-inline-block align-top" alt=""> + Hodor Project + </a> + </div> + <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation"> + <span class="navbar-toggler-icon"></span> + </button> + <div class="collapse navbar-collapse" id="navbarText"> + <ul class="nav navbar-nav mr-auto"></ul> <!-- Stupid Bootstrap --> + <ul class="nav navbar-nav"> + <span class="navbar-text"> + <!-- TO DO: Change Guest to a variable --> + Welcome, <span style="font-weight: bolder; color: white;"> Guest</span> + </span> + <ul class="nav-item"> + <button class="btn btn-outline-success my-2 my-sm-0 mr-3 cd-signin" >Sign In</button> + <button class="btn btn-outline-info my-2 my-sm-0 mr-3 cd-signup" >Register</button> + </ul> + </ul> + </div> + </div> +</nav> +<!-- Navigation Ends here --> + +<div class="cd-user-modal"> <!-- this is the entire modal form, including the background --> +<div class="cd-user-modal-container"> <!-- this is the container wrapper --> +<ul class="cd-switcher"> +<li><a href="#0">Sign in</a></li> +<li><a href="#0">New account</a></li> +</ul> + +<div id="cd-login"> <!-- log in form --> +<form class="cd-form"> + <p class="fieldset"> + <label class="image-replace cd-email" for="signin-email">E-mail</label> + <input class="full-width has-padding has-border" id="signin-email" required type="email" placeholder="E-mail"> + <span class="cd-error-message">Invalid E-mail</span> + </p> + + <p class="fieldset"> + <label class="image-replace cd-password" for="signin-password">Password</label> + <input class="full-width has-padding has-border" id="signin-password" required type="text" placeholder="Password"> + <a href="#0" class="hide-password">Hide</a> + <span class="cd-error-message">Hmm, that doesn't look right!</span> + </p> + + <p class="fieldset"> + <input type="checkbox" id="remember-me" checked> + <label for="remember-me">Remember me</label> + </p> + + <p class="fieldset"> + <input class="full-width" type="submit" value="Login"> + </p> +</form> + +<p class="cd-form-bottom-message"><a href="#0">Forgot your password?</a></p> +</div> <!-- cd-login --> +<div id="cd-signup"> <!-- sign up form --> +<form class="cd-form"> + <p class="fieldset"> + <label class="image-replace cd-username" for="signup-username">Username</label> + <input class="full-width has-padding has-border" id="signup-username" required type="text" placeholder="Username"> + <span class="cd-error-message">Error message here!</span> + </p> + + <p class="fieldset"> + <label class="image-replace cd-email" for="signup-email">E-mail</label> + <input class="full-width has-padding has-border" id="signup-email" required type="email" placeholder="E-mail"> + <span class="cd-error-message">Error message here!</span> + </p> + + <p class="fieldset"> + <label class="image-replace cd-password" for="signup-password">Password</label> + <input class="full-width has-padding has-border" id="signup-password" type="text" required placeholder="Password"> + <a href="#0" class="hide-password">Hide</a> + <span class="cd-error-message">Error message here!</span> + </p> + + <p class="fieldset"> + <input type="checkbox" required id="accept-terms"> + <label for="accept-terms">I agree to the <a href="#0">Terms</a></label> + </p> + + <p class="fieldset"> + <input class="full-width has-padding" type="submit" value="Create account"> + </p> +</form> + +<!-- <a href="#0" class="cd-close-form">Close</a> --> +</div> <!-- cd-signup --> + +<div id="cd-reset-password"> <!-- reset password form --> +<p class="cd-form-message">Lost your password? Please enter your email address. You will receive a link to create a new password.</p> + +<form class="cd-form"> + <p class="fieldset"> + <label class="image-replace cd-email" for="reset-email">E-mail</label> + <input class="full-width has-padding has-border" id="reset-email" type="email" placeholder="E-mail"> + <span class="cd-error-message">Error message here!</span> + </p> + + <p class="fieldset"> + <input class="full-width has-padding" type="submit" value="Reset password"> + </p> +</form> + +<p class="cd-form-bottom-message"><a href="#0">Back to log-in</a></p> +</div> <!-- cd-reset-password --> +<a href="#0" class="cd-close-form">Close</a> +</div> <!-- cd-user-modal-container --> +</div> <!-- cd-user-modal --> diff --git a/hodor/templates/printer/index.html b/hodor/templates/printer/index.html deleted file mode 100644 index 00e9c5e..0000000 --- a/hodor/templates/printer/index.html +++ /dev/null @@ -1,8 +0,0 @@ -{% extends "layout/layout.html" %} -{% block body %} - <ul> - <p> - <a href="{{ url_for('printer') }}">Click here to print!</a> - </p> - </ul> -{% endblock %} diff --git a/hodor/templates/printer/print.html b/hodor/templates/printer/print.html deleted file mode 100644 index 6053f54..0000000 --- a/hodor/templates/printer/print.html +++ /dev/null @@ -1,10 +0,0 @@ -{% extends "layout/layout.html" %} -{% block body %} - <form action="{{ url_for('printer') }}" method="post"> - {{ form.csrf_token }} - <dl> - <dd>{{ form.text.label }} {{ form.text(size=20) }} {{ render_error(form.text) }}</dd> - <dd><input type="submit" value="Flash"/></dd> - </dl> - </form> -{% endblock %} -- GitLab