From 23608321549df020dc0a2c79fc00f5edd1ffe2e6 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 4 Aug 2015 22:14:25 -0400 Subject: pull in video stuff and write bg wrapper :) --- public/css/css.css | 3 +++ 1 file changed, 3 insertions(+) (limited to 'public/css/css.css') diff --git a/public/css/css.css b/public/css/css.css index 49f44ba..3b8cf24 100644 --- a/public/css/css.css +++ b/public/css/css.css @@ -1 +1,4 @@ html,body{width:100%;height:100%;margin:0;padding:0;} +#bg{position:fixed;top:0;left:0;z-index:-1;background-color:black;} +html{background:black;} +body{background:transparent;} -- cgit v1.2.3-70-g09d2 From 39f3e69d477a605ae676a64222e2486f67856b8e Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 4 Aug 2015 22:22:30 -0400 Subject: css --- public/css/css.css | 3 ++- public/js/lib/bg.js | 10 ++++------ server/index.js | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) (limited to 'public/css/css.css') diff --git a/public/css/css.css b/public/css/css.css index 3b8cf24..c20b717 100644 --- a/public/css/css.css +++ b/public/css/css.css @@ -1,4 +1,5 @@ html,body{width:100%;height:100%;margin:0;padding:0;} -#bg{position:fixed;top:0;left:0;z-index:-1;background-color:black;} +#bg{position:absolute;top:0;left:0;z-index:-1;background-color:black;z-index:-1;background-position:center center;background-size:contain;} +#bg.tile{background-size:auto auto;} html{background:black;} body{background:transparent;} diff --git a/public/js/lib/bg.js b/public/js/lib/bg.js index 5a188f3..98bcc1b 100644 --- a/public/js/lib/bg.js +++ b/public/js/lib/bg.js @@ -3,9 +3,9 @@ var bg = (function(){ var bg = {} bg.el = document.getElementById("bg") - bg.change = function(url){ + bg.change = function(picture){ var img = new Image () - img.src = url + img.src = picture.url oktween.add({ obj: bg.el.style, from: { opacity: 1 }, @@ -13,17 +13,15 @@ var bg = (function(){ easing: "circ_in", duration: 500, finished: function(){ - bg.el.style.backgroundImage = "url(" + url + ")" + bg.el.style.backgroundImage = "url(" + picture.url + ")" + bg.el.className = picture.tile ? "tile" : "" } }).then({ delay: 500, - obj: bg.el.style, - from: { opacity: 0 }, to: { opacity: 1 }, easing: "circ_in", duration: 500, }) - } })() \ No newline at end of file diff --git a/server/index.js b/server/index.js index 89ba350..d375351 100644 --- a/server/index.js +++ b/server/index.js @@ -15,8 +15,8 @@ var app = express() var server app.set('port', config.port) -app.set('views', path.join(__dirname, '../views')) app.set('view engine', 'ejs') +app.set('views', path.join(__dirname, '../views')) app.use(express.static(path.join(__dirname, '../public'))) app.use(require('morgan')("combined", {})) app.use(require("express-json")()) -- cgit v1.2.3-70-g09d2 From 2ae2214a89e7599edeefbeb0d852566734717cf3 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 4 Aug 2015 22:26:10 -0400 Subject: depz --- public/css/css.css | 2 +- public/js/lib/bg.js | 1 + public/js/vendor/lodash.min.js | 98 +++++++++++++++++++++++++++++++++++++++ public/js/vendor/view/formview.js | 3 ++ views/partials/scripts.ejs | 1 + 5 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 public/js/vendor/lodash.min.js (limited to 'public/css/css.css') diff --git a/public/css/css.css b/public/css/css.css index c20b717..ec56cfe 100644 --- a/public/css/css.css +++ b/public/css/css.css @@ -1,5 +1,5 @@ html,body{width:100%;height:100%;margin:0;padding:0;} -#bg{position:absolute;top:0;left:0;z-index:-1;background-color:black;z-index:-1;background-position:center center;background-size:contain;} +#bg{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;background-color:black;z-index:-1;background-position:center center;background-size:contain;} #bg.tile{background-size:auto auto;} html{background:black;} body{background:transparent;} diff --git a/public/js/lib/bg.js b/public/js/lib/bg.js index 98bcc1b..6fa75d5 100644 --- a/public/js/lib/bg.js +++ b/public/js/lib/bg.js @@ -23,5 +23,6 @@ var bg = (function(){ duration: 500, }) } + return bg })() \ No newline at end of file diff --git a/public/js/vendor/lodash.min.js b/public/js/vendor/lodash.min.js new file mode 100644 index 0000000..e6c9820 --- /dev/null +++ b/public/js/vendor/lodash.min.js @@ -0,0 +1,98 @@ +/** + * @license + * lodash 3.10.1 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE + * Build: `lodash modern -o ./lodash.js` + */ +;(function(){function n(n,t){if(n!==t){var r=null===n,e=n===w,u=n===n,o=null===t,i=t===w,f=t===t;if(n>t&&!o||!u||r&&!i&&f||e&&f)return 1;if(n=n&&9<=n&&13>=n||32==n||160==n||5760==n||6158==n||8192<=n&&(8202>=n||8232==n||8233==n||8239==n||8287==n||12288==n||65279==n); +}function v(n,t){for(var r=-1,e=n.length,u=-1,o=[];++r=F&&gu&&lu?new Dn(t):null,c=t.length;a&&(i=Mn,f=false,t=a);n:for(;++oi(t,a,0)&&u.push(a);return u}function at(n,t){var r=true;return Su(n,function(n,e,u){return r=!!t(n,e,u)}),r}function ct(n,t,r,e){var u=e,o=u;return Su(n,function(n,i,f){i=+t(n,i,f),(r(i,u)||i===e&&i===o)&&(u=i, +o=n)}),o}function lt(n,t){var r=[];return Su(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function st(n,t,r,e){var u;return r(n,function(n,r,o){return t(n,r,o)?(u=e?r:n,false):void 0}),u}function pt(n,t,r,e){e||(e=[]);for(var u=-1,o=n.length;++ut&&(t=-t>u?0:u+t),r=r===w||r>u?u:+r||0,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Be(u);++e=c)break n;o=e[o],u*="asc"===o||true===o?1:-1;break n}u=t.b-r.b}return u})}function $t(n,t){ +var r=0;return Su(n,function(n,e,u){r+=+t(n,e,u)||0}),r}function St(n,t){var e=-1,u=xr(),o=n.length,i=u===r,f=i&&o>=F,a=f&&gu&&lu?new Dn(void 0):null,c=[];a?(u=Mn,i=false):(f=false,a=t?[]:c);n:for(;++eu(a,s,0)&&((t||f)&&a.push(s),c.push(l))}return c}function Ft(n,t){for(var r=-1,e=t.length,u=Be(e);++r>>1,i=n[o];(r?i<=t:iu?w:o,u=1);++e=F)return t.plant(e).value();for(var u=0,n=r?o[u].apply(this,n):e;++uarguments.length;return typeof e=="function"&&o===w&&Oo(r)?n(r,e,u,i):Ot(r,wr(e,o,4),u,i,t)}}function sr(n,t,r,e,u,o,i,f,a,c){function l(){for(var m=arguments.length,b=m,j=Be(m);b--;)j[b]=arguments[b];if(e&&(j=Mt(j,e,u)),o&&(j=qt(j,o,i)),_||y){var b=l.placeholder,k=v(j,b),m=m-k.length;if(mt?0:t)):[]}function Pr(n,t,r){var e=n?n.length:0;return e?((r?Ur(n,t,r):null==t)&&(t=1),t=e-(+t||0),Et(n,0,0>t?0:t)):[]}function Kr(n){return n?n[0]:w}function Vr(n,t,e){var u=n?n.length:0;if(!u)return-1;if(typeof e=="number")e=0>e?bu(u+e,0):e;else if(e)return e=Lt(n,t), +er?bu(u+r,0):r||0,typeof n=="string"||!Oo(n)&&be(n)?r<=u&&-1t?0:+t||0,e);++r=n&&(t=w),r}}function ae(n,t,r){function e(t,r){r&&iu(r),a=p=h=w,t&&(_=ho(),c=n.apply(s,f),p||a||(f=s=w))}function u(){var n=t-(ho()-l);0>=n||n>t?e(h,a):p=su(u,n)}function o(){e(g,p); +}function i(){if(f=arguments,l=ho(),s=this,h=g&&(p||!y),false===v)var r=y&&!p;else{a||y||(_=l);var e=v-(l-_),i=0>=e||e>v;i?(a&&(a=iu(a)),_=l,c=n.apply(s,f)):a||(a=su(o,e))}return i&&p?p=iu(p):p||t===v||(p=su(u,t)),r&&(i=true,c=n.apply(s,f)),!i||p||a||(f=s=w),c}var f,a,c,l,s,p,h,_=0,v=false,g=true;if(typeof n!="function")throw new Ge(L);if(t=0>t?0:+t||0,true===r)var y=true,g=false;else ge(r)&&(y=!!r.leading,v="maxWait"in r&&bu(+r.maxWait||0,t),g="trailing"in r?!!r.trailing:g);return i.cancel=function(){p&&iu(p),a&&iu(a), +_=0,a=p=h=w},i}function ce(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],o=r.cache;return o.has(u)?o.get(u):(e=n.apply(this,e),r.cache=o.set(u,e),e)}if(typeof n!="function"||t&&typeof t!="function")throw new Ge(L);return r.cache=new ce.Cache,r}function le(n,t){if(typeof n!="function")throw new Ge(L);return t=bu(t===w?n.length-1:+t||0,0),function(){for(var r=arguments,e=-1,u=bu(r.length-t,0),o=Be(u);++et}function pe(n){return h(n)&&Er(n)&&nu.call(n,"callee")&&!cu.call(n,"callee")}function he(n,t,r,e){return e=(r=typeof r=="function"?Bt(r,e,3):w)?r(n,t):w,e===w?dt(n,t,r):!!e}function _e(n){return h(n)&&typeof n.message=="string"&&ru.call(n)==P}function ve(n){return ge(n)&&ru.call(n)==K}function ge(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function ye(n){ +return null==n?false:ve(n)?uu.test(Qe.call(n)):h(n)&&Rn.test(n)}function de(n){return typeof n=="number"||h(n)&&ru.call(n)==V}function me(n){var t;if(!h(n)||ru.call(n)!=Z||pe(n)||!(nu.call(n,"constructor")||(t=n.constructor,typeof t!="function"||t instanceof t)))return false;var r;return ht(n,function(n,t){r=t}),r===w||nu.call(n,r)}function we(n){return ge(n)&&ru.call(n)==Y}function be(n){return typeof n=="string"||h(n)&&ru.call(n)==G}function xe(n){return h(n)&&Sr(n.length)&&!!Sn[ru.call(n)]}function Ae(n,t){ +return nt||!n||!mu(t))return r;do t%2&&(r+=n),t=yu(t/2),n+=n;while(t);return r}function We(n,t,r){var e=n;return(n=u(n))?(r?Ur(e,t,r):null==t)?n.slice(g(n),y(n)+1):(t+="",n.slice(o(n,t),i(n,t)+1)):n}function $e(n,t,r){return r&&Ur(n,t,r)&&(t=w),n=u(n),n.match(t||Wn)||[]}function Se(n,t,r){return r&&Ur(n,t,r)&&(t=w),h(n)?Ne(n):ut(n,t)}function Fe(n){ +return n}function Ne(n){return bt(ot(n,true))}function Te(n,t,r){if(null==r){var e=ge(t),u=e?zo(t):w;((u=u&&u.length?gt(t,u):w)?u.length:e)||(u=false,r=t,t=n,n=this)}u||(u=gt(t,zo(t)));var o=true,e=-1,i=ve(n),f=u.length;false===r?o=false:ge(r)&&"chain"in r&&(o=r.chain);for(;++e=$)return r}else n=0;return Lu(r,e)}}(),Mu=le(function(n,t){ +return h(n)&&Er(n)?ft(n,pt(t,false,true)):[]}),qu=tr(),Pu=tr(true),Ku=le(function(n){for(var t=n.length,e=t,u=Be(l),o=xr(),i=o===r,f=[];e--;){var a=n[e]=Er(a=n[e])?a:[];u[e]=i&&120<=a.length&&gu&&lu?new Dn(e&&a):null}var i=n[0],c=-1,l=i?i.length:0,s=u[0];n:for(;++c(s?Mn(s,a):o(f,a,0))){for(e=t;--e;){var p=u[e];if(0>(p?Mn(p,a):o(n[e],a,0)))continue n}s&&s.push(a),f.push(a)}return f}),Vu=le(function(t,r){r=pt(r);var e=rt(t,r);return It(t,r.sort(n)),e}),Zu=vr(),Yu=vr(true),Gu=le(function(n){return St(pt(n,false,true)); +}),Ju=le(function(n,t){return Er(n)?ft(n,t):[]}),Xu=le(Jr),Hu=le(function(n){var t=n.length,r=2--n?t.apply(this,arguments):void 0}},Nn.ary=function(n,t,r){return r&&Ur(n,t,r)&&(t=w),t=n&&null==t?n.length:bu(+t||0,0),gr(n,E,w,w,w,w,t)},Nn.assign=Co,Nn.at=no,Nn.before=fe,Nn.bind=_o,Nn.bindAll=vo,Nn.bindKey=go,Nn.callback=Se,Nn.chain=Qr,Nn.chunk=function(n,t,r){t=(r?Ur(n,t,r):null==t)?1:bu(yu(t)||1,1),r=0;for(var e=n?n.length:0,u=-1,o=Be(vu(e/t));rr&&(r=-r>u?0:u+r),e=e===w||e>u?u:+e||0,0>e&&(e+=u),u=r>e?0:e>>>0,r>>>=0;rt?0:t)):[]},Nn.takeRight=function(n,t,r){var e=n?n.length:0;return e?((r?Ur(n,t,r):null==t)&&(t=1),t=e-(+t||0),Et(n,0>t?0:t)):[]},Nn.takeRightWhile=function(n,t,r){ +return n&&n.length?Nt(n,wr(t,r,3),false,true):[]},Nn.takeWhile=function(n,t,r){return n&&n.length?Nt(n,wr(t,r,3)):[]},Nn.tap=function(n,t,r){return t.call(r,n),n},Nn.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new Ge(L);return false===r?e=false:ge(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),ae(n,t,{leading:e,maxWait:+t,trailing:u})},Nn.thru=ne,Nn.times=function(n,t,r){if(n=yu(n),1>n||!mu(n))return[];var e=-1,u=Be(xu(n,4294967295));for(t=Bt(t,r,1);++ee?u[e]=t(e):t(e); +return u},Nn.toArray=je,Nn.toPlainObject=ke,Nn.transform=function(n,t,r,e){var u=Oo(n)||xe(n);return t=wr(t,e,4),null==r&&(u||ge(n)?(e=n.constructor,r=u?Oo(n)?new e:[]:$u(ve(e)?e.prototype:w)):r={}),(u?Pn:_t)(n,function(n,e,u){return t(r,n,e,u)}),r},Nn.union=Gu,Nn.uniq=Gr,Nn.unzip=Jr,Nn.unzipWith=Xr,Nn.values=Ee,Nn.valuesIn=function(n){return Ft(n,Re(n))},Nn.where=function(n,t){return re(n,bt(t))},Nn.without=Ju,Nn.wrap=function(n,t){return t=null==t?Fe:t,gr(t,R,w,[n],[])},Nn.xor=function(){for(var n=-1,t=arguments.length;++nr?0:+r||0,e),r-=t.length,0<=r&&n.indexOf(t,r)==r},Nn.escape=function(n){return(n=u(n))&&hn.test(n)?n.replace(sn,c):n},Nn.escapeRegExp=function(n){return(n=u(n))&&bn.test(n)?n.replace(wn,l):n||"(?:)"},Nn.every=te,Nn.find=ro,Nn.findIndex=qu,Nn.findKey=$o,Nn.findLast=eo, +Nn.findLastIndex=Pu,Nn.findLastKey=So,Nn.findWhere=function(n,t){return ro(n,bt(t))},Nn.first=Kr,Nn.floor=ni,Nn.get=function(n,t,r){return n=null==n?w:yt(n,Dr(t),t+""),n===w?r:n},Nn.gt=se,Nn.gte=function(n,t){return n>=t},Nn.has=function(n,t){if(null==n)return false;var r=nu.call(n,t);if(!r&&!Wr(t)){if(t=Dr(t),n=1==t.length?n:yt(n,Et(t,0,-1)),null==n)return false;t=Zr(t),r=nu.call(n,t)}return r||Sr(n.length)&&Cr(t,n.length)&&(Oo(n)||pe(n))},Nn.identity=Fe,Nn.includes=ee,Nn.indexOf=Vr,Nn.inRange=function(n,t,r){ +return t=+t||0,r===w?(r=t,t=0):r=+r||0,n>=xu(t,r)&&nr?bu(e+r,0):xu(r||0,e-1))+1;else if(r)return u=Lt(n,t,true)-1,n=n[u],(t===t?t===n:n!==n)?u:-1; +if(t!==t)return p(n,u,true);for(;u--;)if(n[u]===t)return u;return-1},Nn.lt=Ae,Nn.lte=function(n,t){return n<=t},Nn.max=ti,Nn.min=ri,Nn.noConflict=function(){return Zn._=eu,this},Nn.noop=Le,Nn.now=ho,Nn.pad=function(n,t,r){n=u(n),t=+t;var e=n.length;return er?0:+r||0,n.length),n.lastIndexOf(t,r)==r},Nn.sum=function(n,t,r){if(r&&Ur(n,t,r)&&(t=w),t=wr(t,r,3),1==t.length){n=Oo(n)?n:zr(n),r=n.length;for(var e=0;r--;)e+=+t(n[r])||0;n=e}else n=$t(n,t);return n},Nn.template=function(n,t,r){var e=Nn.templateSettings;r&&Ur(n,t,r)&&(t=r=w),n=u(n),t=nt(tt({},r||t),e,Qn),r=nt(tt({},t.imports),e.imports,Qn); +var o,i,f=zo(r),a=Ft(r,f),c=0;r=t.interpolate||Cn;var l="__p+='";r=Ze((t.escape||Cn).source+"|"+r.source+"|"+(r===gn?jn:Cn).source+"|"+(t.evaluate||Cn).source+"|$","g");var p="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":"";if(n.replace(r,function(t,r,e,u,f,a){return e||(e=u),l+=n.slice(c,a).replace(Un,s),r&&(o=true,l+="'+__e("+r+")+'"),f&&(i=true,l+="';"+f+";\n__p+='"),e&&(l+="'+((__t=("+e+"))==null?'':__t)+'"),c=a+t.length,t}),l+="';",(t=t.variable)||(l="with(obj){"+l+"}"),l=(i?l.replace(fn,""):l).replace(an,"$1").replace(cn,"$1;"), +l="function("+(t||"obj")+"){"+(t?"":"obj||(obj={});")+"var __t,__p=''"+(o?",__e=_.escape":"")+(i?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+l+"return __p}",t=Jo(function(){return qe(f,p+"return "+l).apply(w,a)}),t.source=l,_e(t))throw t;return t},Nn.trim=We,Nn.trimLeft=function(n,t,r){var e=n;return(n=u(n))?n.slice((r?Ur(e,t,r):null==t)?g(n):o(n,t+"")):n},Nn.trimRight=function(n,t,r){var e=n;return(n=u(n))?(r?Ur(e,t,r):null==t)?n.slice(0,y(n)+1):n.slice(0,i(n,t+"")+1):n; +},Nn.trunc=function(n,t,r){r&&Ur(n,t,r)&&(t=w);var e=U;if(r=W,null!=t)if(ge(t)){var o="separator"in t?t.separator:o,e="length"in t?+t.length||0:e;r="omission"in t?u(t.omission):r}else e=+t||0;if(n=u(n),e>=n.length)return n;if(e-=r.length,1>e)return r;if(t=n.slice(0,e),null==o)return t+r;if(we(o)){if(n.slice(e).search(o)){var i,f=n.slice(0,e);for(o.global||(o=Ze(o.source,(kn.exec(o)||"")+"g")),o.lastIndex=0;n=o.exec(f);)i=n.index;t=t.slice(0,null==i?e:i)}}else n.indexOf(o,e)!=e&&(o=t.lastIndexOf(o), +-1u.__dir__?"Right":"")}),u},zn.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}}),Pn(["filter","map","takeWhile"],function(n,t){ +var r=t+1,e=r!=T;zn.prototype[n]=function(n,t){var u=this.clone();return u.__iteratees__.push({iteratee:wr(n,t,1),type:r}),u.__filtered__=u.__filtered__||e,u}}),Pn(["first","last"],function(n,t){var r="take"+(t?"Right":"");zn.prototype[n]=function(){return this[r](1).value()[0]}}),Pn(["initial","rest"],function(n,t){var r="drop"+(t?"":"Right");zn.prototype[n]=function(){return this.__filtered__?new zn(this):this[r](1)}}),Pn(["pluck","where"],function(n,t){var r=t?"filter":"map",e=t?bt:ze;zn.prototype[n]=function(n){ +return this[r](e(n))}}),zn.prototype.compact=function(){return this.filter(Fe)},zn.prototype.reject=function(n,t){return n=wr(n,t,1),this.filter(function(t){return!n(t)})},zn.prototype.slice=function(n,t){n=null==n?0:+n||0;var r=this;return r.__filtered__&&(0t)?new zn(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==w&&(t=+t||0,r=0>t?r.dropRight(-t):r.take(t-n)),r)},zn.prototype.takeRightWhile=function(n,t){return this.reverse().takeWhile(n,t).reverse()},zn.prototype.toArray=function(){return this.take(Ru); +},_t(zn.prototype,function(n,t){var r=/^(?:filter|map|reject)|While$/.test(t),e=/^(?:first|last)$/.test(t),u=Nn[e?"take"+("last"==t?"Right":""):t];u&&(Nn.prototype[t]=function(){function t(n){return e&&i?u(n,1)[0]:u.apply(w,Jn([n],o))}var o=e?[1]:arguments,i=this.__chain__,f=this.__wrapped__,a=!!this.__actions__.length,c=f instanceof zn,l=o[0],s=c||Oo(f);return s&&r&&typeof l=="function"&&1!=l.length&&(c=s=false),l={func:ne,args:[t],thisArg:w},a=c&&!a,e&&!i?a?(f=f.clone(),f.__actions__.push(l),n.call(f)):u.call(w,this.value())[0]:!e&&s?(f=a?f:new zn(this), +f=n.apply(f,o),f.__actions__.push(l),new Ln(f,i)):this.thru(t)})}),Pn("join pop push replace shift sort splice split unshift".split(" "),function(n){var t=(/^(?:replace|split)$/.test(n)?He:Je)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:join|pop|replace|shift)$/.test(n);Nn.prototype[n]=function(){var n=arguments;return e&&!this.__chain__?t.apply(this.value(),n):this[r](function(r){return t.apply(r,n)})}}),_t(zn.prototype,function(n,t){var r=Nn[t];if(r){var e=r.name+"";(Wu[e]||(Wu[e]=[])).push({ +name:t,func:r})}}),Wu[sr(w,A).name]=[{name:"wrapper",func:w}],zn.prototype.clone=function(){var n=new zn(this.__wrapped__);return n.__actions__=qn(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=qn(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=qn(this.__views__),n},zn.prototype.reverse=function(){if(this.__filtered__){var n=new zn(this);n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},zn.prototype.value=function(){ +var n,t=this.__wrapped__.value(),r=this.__dir__,e=Oo(t),u=0>r,o=e?t.length:0;n=o;for(var i=this.__views__,f=0,a=-1,c=i.length;++a"'`]/g,pn=RegExp(ln.source),hn=RegExp(sn.source),_n=/<%-([\s\S]+?)%>/g,vn=/<%([\s\S]+?)%>/g,gn=/<%=([\s\S]+?)%>/g,yn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,dn=/^\w*$/,mn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,wn=/^[:!,]|[\\^$.*+?()[\]{}|\/]|(^[0-9a-fA-Fnrtuvx])|([\n\r\u2028\u2029])/g,bn=RegExp(wn.source),xn=/[\u0300-\u036f\ufe20-\ufe23]/g,An=/\\(\\)?/g,jn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,kn=/\w*$/,In=/^0[xX]/,Rn=/^\[object .+?Constructor\]$/,On=/^\d+$/,En=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Cn=/($^)/,Un=/['\n\r\u2028\u2029\\]/g,Wn=RegExp("[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?=[A-Z\\xc0-\\xd6\\xd8-\\xde][a-z\\xdf-\\xf6\\xf8-\\xff]+)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+|[A-Z\\xc0-\\xd6\\xd8-\\xde]+|[0-9]+","g"),$n="Array ArrayBuffer Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Math Number Object RegExp Set String _ clearTimeout isFinite parseFloat parseInt setTimeout TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap".split(" "),Sn={}; +Sn[X]=Sn[H]=Sn[Q]=Sn[nn]=Sn[tn]=Sn[rn]=Sn[en]=Sn[un]=Sn[on]=true,Sn[B]=Sn[D]=Sn[J]=Sn[M]=Sn[q]=Sn[P]=Sn[K]=Sn["[object Map]"]=Sn[V]=Sn[Z]=Sn[Y]=Sn["[object Set]"]=Sn[G]=Sn["[object WeakMap]"]=false;var Fn={};Fn[B]=Fn[D]=Fn[J]=Fn[M]=Fn[q]=Fn[X]=Fn[H]=Fn[Q]=Fn[nn]=Fn[tn]=Fn[V]=Fn[Z]=Fn[Y]=Fn[G]=Fn[rn]=Fn[en]=Fn[un]=Fn[on]=true,Fn[P]=Fn[K]=Fn["[object Map]"]=Fn["[object Set]"]=Fn["[object WeakMap]"]=false;var Nn={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a", +"\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y", +"\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss"},Tn={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},Ln={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"},zn={"function":true,object:true},Bn={0:"x30",1:"x31",2:"x32",3:"x33",4:"x34",5:"x35",6:"x36",7:"x37",8:"x38",9:"x39",A:"x41",B:"x42",C:"x43",D:"x44",E:"x45",F:"x46",a:"x61",b:"x62",c:"x63",d:"x64",e:"x65",f:"x66",n:"x6e",r:"x72",t:"x74",u:"x75",v:"x76",x:"x78"},Dn={"\\":"\\", +"'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Mn=zn[typeof exports]&&exports&&!exports.nodeType&&exports,qn=zn[typeof module]&&module&&!module.nodeType&&module,Pn=zn[typeof self]&&self&&self.Object&&self,Kn=zn[typeof window]&&window&&window.Object&&window,Vn=qn&&qn.exports===Mn&&Mn,Zn=Mn&&qn&&typeof global=="object"&&global&&global.Object&&global||Kn!==(this&&this.window)&&Kn||Pn||this,Yn=m();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Zn._=Yn, define(function(){ +return Yn})):Mn&&qn?Vn?(qn.exports=Yn)._=Yn:Mn._=Yn:Zn._=Yn}).call(this); \ No newline at end of file diff --git a/public/js/vendor/view/formview.js b/public/js/vendor/view/formview.js index f5845e7..d77ff51 100644 --- a/public/js/vendor/view/formview.js +++ b/public/js/vendor/view/formview.js @@ -124,6 +124,7 @@ var FormView = View.extend({ }) +/* var ModalFormView = ModalView.extend(FormView.prototype).extend({ @@ -133,3 +134,5 @@ var ModalFormView = ModalView.extend(FormView.prototype).extend({ } }) + +*/ \ No newline at end of file diff --git a/views/partials/scripts.ejs b/views/partials/scripts.ejs index e347249..d11ca9b 100644 --- a/views/partials/scripts.ejs +++ b/views/partials/scripts.ejs @@ -1,4 +1,5 @@ + -- cgit v1.2.3-70-g09d2 From d0b4cd4f7e6364a35a420f2f3b0fcdbb502d8a9a Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Wed, 5 Aug 2015 00:51:32 -0400 Subject: basic routing --- public/css/css.css | 2 +- public/js/index.js | 16 +++++++++++++++- public/js/lib/views/index.js | 22 ++++++++++++++++++++++ public/js/lib/views/lobby/index.js | 9 +++++++++ public/js/lib/views/room/index.js | 9 +++++++++ public/js/lib/ws.js | 7 ++++--- server/index.js | 6 ++++-- server/ws.js | 37 +++++++++++++++++++++++++++++++++++++ views/pages/index.ejs | 17 ----------------- views/pages/lobby.ejs | 22 ++++++++++++++++++++++ views/pages/room.ejs | 6 +++++- views/partials/scripts.ejs | 1 + 12 files changed, 129 insertions(+), 25 deletions(-) create mode 100644 public/js/lib/views/index.js create mode 100644 public/js/lib/views/lobby/index.js create mode 100644 public/js/lib/views/room/index.js create mode 100644 server/ws.js delete mode 100644 views/pages/index.ejs create mode 100644 views/pages/lobby.ejs (limited to 'public/css/css.css') diff --git a/public/css/css.css b/public/css/css.css index ec56cfe..1fce66f 100644 --- a/public/css/css.css +++ b/public/css/css.css @@ -1,5 +1,5 @@ html,body{width:100%;height:100%;margin:0;padding:0;} -#bg{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;background-color:black;z-index:-1;background-position:center center;background-size:contain;} +#bg{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;background-color:white;z-index:-1;background-position:center center;background-size:contain;} #bg.tile{background-size:auto auto;} html{background:black;} body{background:transparent;} diff --git a/public/js/index.js b/public/js/index.js index 560a2a1..30f5975 100644 --- a/public/js/index.js +++ b/public/js/index.js @@ -2,11 +2,25 @@ var app = (function(){ var app = {} app.init = function(){ - // ws.connect() + user.init() + + app.socket = ws.connect() + + app.router = new SiteRouter () $(window).on("focus", app.focus) $(window).on("blur", app.blur) } + app.focused = true + + app.focus = function(){ + app.focused = true + } + + app.blur = function(){ + app.focused = false + } + document.addEventListener('DOMContentLoaded', app.init) })() diff --git a/public/js/lib/views/index.js b/public/js/lib/views/index.js new file mode 100644 index 0000000..d96bffb --- /dev/null +++ b/public/js/lib/views/index.js @@ -0,0 +1,22 @@ +var SiteRouter = Router.extend({ + el: "body", + + events: { + }, + + routes: { + "/": 'lobby', + "/v/:name": 'room', + }, + + initialize: function(){ + this.route() + }, + + lobby: function(){ + }, + + room: function(name){ + }, + +}) \ No newline at end of file diff --git a/public/js/lib/views/lobby/index.js b/public/js/lib/views/lobby/index.js new file mode 100644 index 0000000..5ed1966 --- /dev/null +++ b/public/js/lib/views/lobby/index.js @@ -0,0 +1,9 @@ +var LobbyView = View.extend({ + + events: { + }, + + initialize: function(){ + } + +}) \ No newline at end of file diff --git a/public/js/lib/views/room/index.js b/public/js/lib/views/room/index.js new file mode 100644 index 0000000..b266e29 --- /dev/null +++ b/public/js/lib/views/room/index.js @@ -0,0 +1,9 @@ +var RoomView = View.extend({ + + events: { + }, + + initialize: function(){ + } + +}) \ No newline at end of file diff --git a/public/js/lib/ws.js b/public/js/lib/ws.js index 37a8248..fbf9211 100644 --- a/public/js/lib/ws.js +++ b/public/js/lib/ws.js @@ -12,6 +12,7 @@ var ws = function(){ socket.on('connect', ws.connected) socket.on('reconnect', ws.reconnected) socket.on('disconnect', ws.disconnected) + return socket } ws.ready = function (obj) { @@ -19,11 +20,11 @@ var ws = function(){ // presumably we might have reconnected? if (socketIsReady) { - this.chatView.fetchAndDedupe() + // this.chatView.fetchAndDedupe() } else { socketIsReady = true - this.checkIfLoaded() + // this.checkIfLoaded() } } @@ -40,4 +41,4 @@ var ws = function(){ console.log(new Date(), "disconnected") // this.chatView.appendInfo({ content: "Disconnected." }) } -} \ No newline at end of file +} diff --git a/server/index.js b/server/index.js index d375351..657cdc8 100644 --- a/server/index.js +++ b/server/index.js @@ -9,7 +9,8 @@ var http = require('http'), express = require('express'), bodyParser = require('body-parser'), multer = require('multer'), - path = require('path'); + path = require('path'), + ws = require("./ws"); var app = express() var server @@ -31,7 +32,7 @@ app.use(express.query()) // } app.get("/", function(req,res){ - res.render("pages/index", {}) + res.render("pages/lobby", {}) }) app.get("/v/:room", function(req,res){ res.render("pages/room") @@ -42,3 +43,4 @@ server.listen(app.get('port'), function () { console.log('asdf-yt server listening on port ' + app.get('port')); }) +ws.listen(server) \ No newline at end of file diff --git a/server/ws.js b/server/ws.js new file mode 100644 index 0000000..4715d34 --- /dev/null +++ b/server/ws.js @@ -0,0 +1,37 @@ + +var server = require('socket.io') + +var ws = module.exports = {} + +ws.listen = function(app){ + ws.io = server(app) +} +ws.add = function(name){ + var room = {} + room.users = {} + + var ns = base.io.of('/' + name) + + ns.on('connection', function(socket){ + + var username + + socket.on('join', function(data){ + username = data.username + if (room.users[username]) { + // already connected? + room.users[username].disconnect() + room.users[username] = socket + } + }) + + socket.on('message', function(data){ + ns.emit('message', data) + }) + + socket.on('disconnect', function(){ + delete room.users[username] + }) + + }) +} diff --git a/views/pages/index.ejs b/views/pages/index.ejs deleted file mode 100644 index 9a1a900..0000000 --- a/views/pages/index.ejs +++ /dev/null @@ -1,17 +0,0 @@ - - - -yt-chat - - - - - -
- - - - -<% include ../partials/scripts %> - \ No newline at end of file diff --git a/views/pages/lobby.ejs b/views/pages/lobby.ejs new file mode 100644 index 0000000..46b634c --- /dev/null +++ b/views/pages/lobby.ejs @@ -0,0 +1,22 @@ + + + +yt-chat + + + + + +
+ +
+ please enter your nick..
+ +
+ + + + +<% include ../partials/scripts %> + \ No newline at end of file diff --git a/views/pages/room.ejs b/views/pages/room.ejs index fb14a6f..568a136 100644 --- a/views/pages/room.ejs +++ b/views/pages/room.ejs @@ -18,6 +18,11 @@ +
+ please enter your nick..
+ +
+ - [[ include ../partials/scripts ]] \ No newline at end of file diff --git a/views/partials/scripts.ejs b/views/partials/scripts.ejs index d946f86..5908ee7 100644 --- a/views/partials/scripts.ejs +++ b/views/partials/scripts.ejs @@ -16,6 +16,7 @@ + -- cgit v1.2.3-70-g09d2 From 18f6f0219474f0f43e7403a5f5f8cff7c3dd0246 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Wed, 5 Aug 2015 01:21:38 -0400 Subject: login view, lobby view --- public/css/css.css | 21 +++++++++++++++++++++ public/js/index.js | 2 -- public/js/lib/user.js | 4 ++-- public/js/lib/views/index.js | 9 ++++++++- public/js/lib/views/lobby/index.js | 8 ++++++++ public/js/lib/views/login.js | 29 +++++++++++++++++++++++++++++ public/js/lib/views/room/index.js | 3 ++- public/js/lib/ws.js | 9 +++++---- public/js/vendor/util.js | 35 +++++++++++++++++++++++++++++++++++ views/pages/lobby.ejs | 14 +++++++++----- views/partials/scripts.ejs | 5 +++++ 11 files changed, 124 insertions(+), 15 deletions(-) create mode 100644 public/js/lib/views/login.js (limited to 'public/css/css.css') diff --git a/public/css/css.css b/public/css/css.css index 1fce66f..a8d3df1 100644 --- a/public/css/css.css +++ b/public/css/css.css @@ -3,3 +3,24 @@ html,body{width:100%;height:100%;margin:0;padding:0;} #bg.tile{background-size:auto auto;} html{background:black;} body{background:transparent;} +#login { + display: none; +} +#login { + position: absolute; top: 0; left: 0; + width: 100%; height: 100%; + background: rgba(0,0,0,0.95); +} +#lobby form, #login form { + position: absolute; + top: 50%; left: 50%; + -webkit-transform: translate(-50%,-50%); + transform: translate(-50%,-50%); + background: #fff; + padding: 20px; +} + +#lobby input { + font-size: 3vw; + width: 40vw; +} \ No newline at end of file diff --git a/public/js/index.js b/public/js/index.js index 30f5975..6e171fc 100644 --- a/public/js/index.js +++ b/public/js/index.js @@ -4,8 +4,6 @@ var app = (function(){ app.init = function(){ user.init() - app.socket = ws.connect() - app.router = new SiteRouter () $(window).on("focus", app.focus) diff --git a/public/js/lib/user.js b/public/js/lib/user.js index f96946f..1293895 100644 --- a/public/js/lib/user.js +++ b/public/js/lib/user.js @@ -2,10 +2,9 @@ var user = (function(){ var user = {} user.init = function(){ user.load() - user.bind() } user.bind = function(){ - $("#username").on("input", user.save) + // $("#username").on("input", user.save) } user.load = function(){ user.username = user.getCookie() @@ -38,6 +37,7 @@ var user = (function(){ } user.save = function(){ var username = user.sanitize() + if (! username.length) return if (username != user.username) user.setCookie(username); } user.setCookie = function(username){ diff --git a/public/js/lib/views/index.js b/public/js/lib/views/index.js index d96bffb..d5ec35d 100644 --- a/public/js/lib/views/index.js +++ b/public/js/lib/views/index.js @@ -10,13 +10,20 @@ var SiteRouter = Router.extend({ }, initialize: function(){ - this.route() + if (! user.username) { + $("#login").show() + } + else { + this.route() + } }, lobby: function(){ + this.view = new LobbyView () }, room: function(name){ + this.view = new RoomView (name) }, }) \ No newline at end of file diff --git a/public/js/lib/views/lobby/index.js b/public/js/lib/views/lobby/index.js index 5ed1966..70b63c4 100644 --- a/public/js/lib/views/lobby/index.js +++ b/public/js/lib/views/lobby/index.js @@ -1,9 +1,17 @@ var LobbyView = View.extend({ events: { + "form submit": "join" }, initialize: function(){ + this.$createRoom = this.$("#create-room") + }, + + join: function(){ + var name = this.$createRoom.sanitize() + if (! name) { return } + window.location.href = "/v/" + name } }) \ No newline at end of file diff --git a/public/js/lib/views/login.js b/public/js/lib/views/login.js new file mode 100644 index 0000000..325d22d --- /dev/null +++ b/public/js/lib/views/login.js @@ -0,0 +1,29 @@ +var LoginView = View.extend({ + el: "#login", + + events: { + "form submit": "save", + }, + + initialize: function(){ + this.$el.show() + }, + + save: function(e){ + e.preventDefault() + user.save() + var that = this + if (user.username.length) { + app.router.route() + oktween.add({ + obj: this.el.style, + from: { opacity: 1 }, + to: { opacity: 0 }, + duration: 500, + finished: function(){ + that.el.style.display = "none" + } + }) + } + }, +}) \ No newline at end of file diff --git a/public/js/lib/views/room/index.js b/public/js/lib/views/room/index.js index b266e29..58d7449 100644 --- a/public/js/lib/views/room/index.js +++ b/public/js/lib/views/room/index.js @@ -3,7 +3,8 @@ var RoomView = View.extend({ events: { }, - initialize: function(){ + initialize: function(name){ + app.socket = ws.connect(name) } }) \ No newline at end of file diff --git a/public/js/lib/ws.js b/public/js/lib/ws.js index fbf9211..15af8a1 100644 --- a/public/js/lib/ws.js +++ b/public/js/lib/ws.js @@ -1,9 +1,9 @@ -var ws = function(){ +var ws = (function(){ var ws = {} var socket, socketIsReady - ws.connect = function () { + ws.connect = function (room) { if (this.socket) return; - var socketPath = window.location.origin + '/' + posthang.room.subdomain + var socketPath = window.location.origin + '/' + room ws.socket = socket = io(socketPath) // this.socket.on('connect', function(){ console.log(new Date(), "connected")}) @@ -41,4 +41,5 @@ var ws = function(){ console.log(new Date(), "disconnected") // this.chatView.appendInfo({ content: "Disconnected." }) } -} + return ws +})() diff --git a/public/js/vendor/util.js b/public/js/vendor/util.js index 0f5c6ed..7c73ae2 100644 --- a/public/js/vendor/util.js +++ b/public/js/vendor/util.js @@ -240,6 +240,41 @@ if (!Function.prototype.bind) { }; }()); +// Identify browser based on useragent string +(function( ua ) { + ua = ua.toLowerCase(); + var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) || + /(webkit)[ \/]([\w.]+)/.exec( ua ) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) || + /(msie) ([\w.]+)/.exec( ua ) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) || + []; + var matched = { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + browser = {}; + if ( matched.browser ) { + browser[ matched.browser ] = true; + browser.version = matched.version; + } + // Chrome is Webkit, but Webkit is also Safari. + if ( browser.chrome ) { + browser.webkit = true; + } else if ( browser.webkit ) { + browser.safari = true; + } + if (window.$) $.browser = browser; + return browser; +})( navigator.userAgent ); + +// Naive useragent detection pattern +var is_iphone = (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) +var is_ipad = (navigator.userAgent.match(/iPad/i)) +var is_android = (navigator.userAgent.match(/Android/i)) +var is_mobile = is_iphone || is_ipad || is_android +var is_desktop = ! is_mobile; +var app_devicePixelRatio = is_mobile ? devicePixelRatio : 1; function selectElementContents(el) { if (window.getSelection && document.createRange) { diff --git a/views/pages/lobby.ejs b/views/pages/lobby.ejs index 46b634c..80bbf88 100644 --- a/views/pages/lobby.ejs +++ b/views/pages/lobby.ejs @@ -3,19 +3,23 @@ yt-chat -
- please enter your nick..
- +
+ please enter your nick..
+ +
- +
+
+ +
+
<% include ../partials/scripts %> diff --git a/views/partials/scripts.ejs b/views/partials/scripts.ejs index 5908ee7..844d884 100644 --- a/views/partials/scripts.ejs +++ b/views/partials/scripts.ejs @@ -16,7 +16,12 @@ + + + + -- cgit v1.2.3-70-g09d2 From 9be8b15c7efbd84193c74c99ce2c043f025f7ee6 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Wed, 5 Aug 2015 01:27:59 -0400 Subject: util --- public/css/css.css | 9 +++++++-- server/index.js | 6 +++++- server/util.js | 3 +++ 3 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 server/util.js (limited to 'public/css/css.css') diff --git a/public/css/css.css b/public/css/css.css index a8d3df1..5536d6c 100644 --- a/public/css/css.css +++ b/public/css/css.css @@ -16,11 +16,16 @@ body{background:transparent;} top: 50%; left: 50%; -webkit-transform: translate(-50%,-50%); transform: translate(-50%,-50%); - background: #fff; padding: 20px; } +#login form { + background: #fff; +} + #lobby input { font-size: 3vw; - width: 40vw; + width: 60vw; + background: rgba(0,0,0,0.9); + color: #fff; } \ No newline at end of file diff --git a/server/index.js b/server/index.js index 657cdc8..8b8c738 100644 --- a/server/index.js +++ b/server/index.js @@ -10,7 +10,8 @@ var http = require('http'), bodyParser = require('body-parser'), multer = require('multer'), path = require('path'), - ws = require("./ws"); + ws = require("./ws"), + util = require("./util"); var app = express() var server @@ -34,6 +35,9 @@ app.use(express.query()) app.get("/", function(req,res){ res.render("pages/lobby", {}) }) +app.post("/v/", function(req,res){ + res.render("pages/room") +}) app.get("/v/:room", function(req,res){ res.render("pages/room") }) diff --git a/server/util.js b/server/util.js new file mode 100644 index 0000000..11c0cac --- /dev/null +++ b/server/util.js @@ -0,0 +1,3 @@ +var util = module.exports = {} + +util.sanitizeName = function (s){ return (s || "").replace(new RegExp("[^-_a-zA-Z0-9]", 'g'), "") } -- cgit v1.2.3-70-g09d2