From 22ea1e3e090a7f0124aa99c9198bbafbfea42295 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 23 Dec 2011 09:41:58 -0800 Subject: [PATCH] Working on basic application view set up --- assets/css/subway.css | 177 ++++++++++++++++++++++ assets/images/favicon.ico | Bin 0 -> 1406 bytes assets/images/subway.png | Bin 0 -> 11610 bytes assets/js/client.js | 10 +- assets/js/models/chat_application.js | 2 + assets/js/views/chat_application.js | 14 ++ public/images/favicon.ico | Bin 0 -> 1406 bytes public/images/subway.png | Bin 0 -> 11610 bytes views/templates/chat_window_template.jade | 7 +- 9 files changed, 208 insertions(+), 2 deletions(-) create mode 100644 assets/css/subway.css create mode 100644 assets/images/favicon.ico create mode 100644 assets/images/subway.png create mode 100644 assets/js/models/chat_application.js create mode 100644 assets/js/views/chat_application.js create mode 100644 public/images/favicon.ico create mode 100644 public/images/subway.png diff --git a/assets/css/subway.css b/assets/css/subway.css new file mode 100644 index 0000000..e801d0e --- /dev/null +++ b/assets/css/subway.css @@ -0,0 +1,177 @@ +/* Here are the styles for the sidebar */ + +.sidebar > h2 { + text-align: center; +} + +#channels{ + margin-top: 25px; +} + +#channels > .channel{ + padding: 5% 10% 5% 20%; + color: #333333; + border-bottom: 1px solid #CCCCCC; +} + +#channels > .channel:not(.active):hover{ + background: #A7DBD8; + color: #444444; + cursor: pointer; +} + +#channels > .active{ + background: #315857; + color: whiteSmoke; + font-weight: bold; +} + +.channel > .unread, .channel > .unread_mentions { + padding: 2px 6px 2px 6px; + color: whiteSmoke; + font-weight: bold; + border-radius: 4px; + -webkit-border-radius: 4px; + float: right; +} + +.unread{ + background: #980000; +} + +.unread_mentions{ + background: #0B2666; + margin-right: 0.3em; +} + +#logo{ + text-align: center; +} + +#logo > img{ + margin-top: 10%; +} + +/* Here are the styles for the chat window */ + +#chat_window{ + min-height: 100%; + width: 80%; + border-right: 1px solid #DDD; + float: left; + box-sizing: border-box; + -moz-box-sizing: border-box; // for Mozilla + -webkit-box-sizing: border-box; // for WebKit + -ms-box-sizing: border-box; // for IE8 +} + +#chat_bar, #users_bar{ + height: 5%; + background: whiteSmoke; + border-bottom: 1px solid #DDD; + + background-image: linear-gradient(bottom, rgb(230,230,230) 22%, rgb(241,241,241) 53%, rgb(245,245,245) 77%); + background-image: -o-linear-gradient(bottom, rgb(230,230,230) 22%, rgb(241,241,241) 53%, rgb(245,245,245) 77%); + background-image: -moz-linear-gradient(bottom, rgb(230,230,230) 22%, rgb(241,241,241) 53%, rgb(245,245,245) 77%); + background-image: -webkit-linear-gradient(bottom, rgb(230,230,230) 22%, rgb(241,241,241) 53%, rgb(245,245,245) 77%); + background-image: -ms-linear-gradient(bottom, rgb(230,230,230) 22%, rgb(241,241,241) 53%, rgb(245,245,245) 77%); + + background-image: -webkit-gradient( + linear, + left bottom, + left top, + color-stop(0.22, rgb(230,230,230)), + color-stop(0.53, rgb(241,241,241)), + color-stop(0.77, rgb(245,245,245)) + ); +} + +.titlebar{ + padding-top: 0.5em; + font-size: 1.2em; + padding-left: 0.5em; +} + +.window_title{ + font-weight:bold; + margin-right: 2%; +} + +#titlebar #topic{ + color: #777; +} + +#chat_words{ + height: 85%; + overflow: hidden; + overflow-y: auto; + padding: 0% 3% 0% 3%; +} + +#chat_input_container{ + height: 10%; + border-top: 2px solid #DDD; +} + +#chat_input_container .input{ + padding-top: 2%; +} + +#chat_input_container .input input{ + width: 83%; + margin-right: 5%; + float: left; + margin-left: 2%; +} + +#chat_input_container .input a{ + font-size: 1.3em; +} + +.chat_time { + width: 100%; + color: #888888; + text-align: right; +} + +.chat_time span{ + display: inline-block; +} + +.chat_time span.timeline { + border-top: 1px solid #BBBBBB; + display: block; + height: 1px; + width: 79%; + position: relative; + left: 0; + top: 1em; +} + +.chat_message{ + padding: 0.3em 0em 0.3em 0em; +} + +.chat_message .embed img{ + display: block; + max-width: 100%; + max-height: 60%; + padding: 10px; +} + +.mention{ + color: #0B2666; + font-weight: bold; +} + +/* Here are the styles for the user window */ +#users_window{ + min-height: 100%; + width: 20%; + float: left; +} + +#users_list{ + overflow-y: auto; + height: 95%; +} diff --git a/assets/images/favicon.ico b/assets/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..3a9d0a359b893d32f6f4cc2f0894e255bd847d7c GIT binary patch literal 1406 zcmZQzU<5(|0R}M0U}azs1F|%L7$l?s#Ec9aKoZP=&}eLa{%i&jk^c;PVQy+^yw3WyORyV{!!Lw2#kin zz=r@IKN8?$-~$0JFaR?}#F<#c#l(R?Oq_*DTto!I1oMG}2t++t6PSs?mlOs9X&?X* zl6-uU!W=>nK2Thek5y7y7|Q1r;+A9u@uBL4Kzu<-9svP}dLdqJNkKtLHg4Mv!IkHvjk8-BO{P6!7M7pASH@$7m&-qAcX`N7#bMKivp0o1I!Ez0KIfR A$p8QV literal 0 HcmV?d00001 diff --git a/assets/images/subway.png b/assets/images/subway.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d3c0922258ef672ef49022526f633dcde1bca0 GIT binary patch literal 11610 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 A$p8QV literal 0 HcmV?d00001 diff --git a/public/images/subway.png b/public/images/subway.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d3c0922258ef672ef49022526f633dcde1bca0 GIT binary patch literal 11610 zcmXY%1yoy2w}yi|g+lQ{2wL3TN`rf`;uLo+9^AbY*HElDAMReDI20?cMN6?jaBk>- zpOv%ET3IjQiR@eP)Xyq-G%fJ5|rApx>-$N&JgF$M5jE$^jce;*fZ?Yt-WG3SXTKPwhJY7|>c z9eNg_16uZ*9umhPG)K#lj&+LZY>fp#8rGxI4kg(M<#Hu~+U1B2y+?aSfD>Ti)4 zf*jrgg9*NT_V@D(2!uS03Bxhv%K#1Wb5|?`7^I6DAE4FYgKI z7!<;l`0?;%C3Flrj|x{$+TZnyeYQQRehUQKkMI5%I`k==R7ruMN)Z2SI`k3W*hhM^ zxr8ef~?N*x{mk}S1r>r!N@QwCWr{-mGufHzvU(A>PI9@^n&iyOXX}Rgs z!Ovo)^!fR7ZI+-}0i6xV9pD15&<5GL(e22^B|E9tQHP|twRMGrr0d~o*}41Ssz65U z!fA~P6BRjFN_SzSIcG`@<~Nk^TGaE;^>ktnDLb@B@RSgO2Gv%n*ef*3Cr-*^oI(j3 z9dJ~|Z$?9dueeW&!&i7+&5WK|O;+>mG_G0jyM?*n9Lm$3qCt??d*s+ndacEKz&Lh> z`KStNnx?=%o=)0Q#3T~`|M*I4{6A_s&W)yVhZ#?+8lUkPB{_WsnLmHM9pu_8WHiO5 zP+(J%JU&=8Gt90P__lW>l~uReP}mY1z`YV;nIa<6*52NRj-i$-;&(NcxfwvYJ^S;S z^Lc{}(ZRQ(9Ar#!%YsA1lpi^Z_AHKWNHV_WOwh?CPzk&3Jl+i@(nto}U(Z!k=~T?w zjZdgvQhIq_!9IBry%ti}_1eLlPIzqsIa{;_Pjp#oXBV11QP~%Z0D|<-E3ZKW546Z z1%wHFWQx>aQd6Cy?7Em(f4u6&zzte$k4B8z{l%mNorufE^%szqw$W{i0rfS6bcop6&u;N!axpY^I@4V^H7D6=W{o zk5*HsNR}B$FUJoe6iKqSX3I3cspk5^reppwSCRZ6dk0^bdo7_1+lr+WeB2cTpLEol z4@J^2N?auJg)r(jIXvEn<3#`Me%j4GX$jr08!az?&pkf7@XXVp?mK&uZm0o(asIpI zxormE<@gXm*4F=C&SfP!g zxMm7PRyDatm8vwlJ2H`c64Q9s-|B8X$+*TFNyo&*8p}*q_}^(kY?OmQ^YQ_`n~?kYY2Q1--YJE8jti@K4LjgRciZJ;2wy_wpE&(%AIsEbcrXKbZy@%vnD-81=JF z4}ni?ryu<9YCC*LGLPGQFpivezDfx;eEN#oXQ%to{&?w{KWx#VUatzAnOR&cBU69| zWFu*RjlLo=L_XiMnGyaRvt$BY(W^>8~xZP2cBEfD>44;uJ*vj>$t z|1p-yYdw*3vt$oxLX3t@8VrSD0KknO$Ju>yB!~iJ`c_cTkiyJcUs>5A)VQL^ba^EpARtKO;W4)W6<3;F80v{m zP2;en`PYKG0nV3+S-HaQyNIg!`TzYjtFbJ8i05_C7f=uxTEz0|$}{)(7c&1iV|4~+ z{_TYCNj@!3nt7Gi*OO!3+#uSN@ww#QEU<%J=~+n_HNK}9rVT)D;&*O`*_`@w5?*HKWEY&7!jgp(L}6(` zOtSl%@D+)1z)g_?Sd~e1lJp0ej~ErMjbl}nxLcTic0$7b`a7*Zt6tE+t`f!oB4vBu zUQ{)4^_Qqot~8;+u6wy>$c0^byfe*fxBG<^I^?YYllNf ziV#vk`VIa98D}T#rxItUmXSYv)oUGLYTHNUSJ?IH?B;U4WZ~=tPV5|c;&(rlW@_Ht z-U-`Ca(-6Gc_lZOj6*?+V3IAKz!3#-;hC-LFuiOPUWM#nbh*ce0U&+%2fcxKV8w5`$H6$ z{DvIWRb|z?hf5|8EIP8rfe+n}M@C+R$BXX!Q;!d~3&q%EE+Uh8tF7+q5}?Fyot+h| zK5&|{umDewTp`z6zNBG`+Kh29Ir+`a2b*k6+Fopx%Duv#_tzVtM(q-}QTt4it&g_` zPTY?;GS?9P?B3n>`Z z#IUmshZ1B2S~s%E1Y5_FXo$wiNhL5i&rNDUI;Q!uEEHT}7r9iX`QHn=9z$P9-0UE8 z!7w36(4J;6)^?QZ936dt2JOcb@8#lHP6^2M>1KcA)A9N>TRvW^wk}^tAAfXa1ii=R zmk);{bLk8W|CS?b)jwT>o$$x|y?5idmk|B)_(MJBS#EonKvn-ZdYrwq4R9vbQCZvU}n8;y0sd;;^ZAFT`Q$+OP6Ps@kH%s-ugW^`u)S&;Ha;O5FXa zf4WYLn;KIt_ZS_C$y8=Y-T=Jg|(T84N0G72fgOimn1 zZ;UT_zToxWOr~*b+>~*i)s=# zTR2HB@u@(J&p6_JUu+9eTYvu~cBm@fYluXmU)se|WzyZO{_qhN9_JLRsqQk&psfvN zOdhu28CXLmBQ1DO7dl(2+p&$^I#uY+kL4_lkAn%&@Cw4^t%dOq9nMwg))*V1QJGJ|{leXt)~do5lY=_DA4R z?v8KQ-x?Gh0>C?>)ZQDx7zi^V8s7zo!6WpTDhvrx;>hHp^&EWb!9*e6Ds}KREzSQ9 zpC(~_Cx(&fKXn2Iennj)k2!6GS@nPvA%m|$F^autfT;dnrPuM+KLYQTziLyD)Er-p zDT9m6X^9CLmy7C_>+4pW3PM5-X1*!Y@?^ip-wj!G;2}f{rA}N>BF08T4hAHxuP?{; zg*ziJI*d8jFWNQgN3)T9OE#KSw{iK*OnmP95KwTj*L}S;MGJz~e8Z?6R6gU-i!AZeeSZAb0J8Sai+Gt>TB<&iaMmh8A?4=A z!YY@TkUJd^Xkro=c+S(B&uw1aQP-ALT7D=eso#-d<1%#uzlrKtYidfs2i2sjgi8gX zF%nado%$kL7dv2fv)kb93`2R4mYjAzMS>`h^wKBjCWDhH{{-2lY&6suwR;{fH8PuF zzqn%o5MuQ%JGCD-Ejt;sOzoq5-GcG#d`SG9EAIPALE(?8fuCs2kbDXoNo2nh6T-F7 zJbB-^83(7Q%gxSvo^DJRvN0pNX~0Y%dwe~Yk`XyYLg|()ope^giri)0fD*DR7j96%$si6&B z;|9?+y2PN;FP>Le10Q}PxfRLPrWFvAJfoV8-ny^_3_))_s&4<=c2s@th95}|y(qLC zS^c}Ub$|bhd}+pgR~ckEkC;QT36z3ff8)r(tE=DCpyH#v4B2F)`gH7w;zMfA-dkHk zNZ#@ZOKY*tAFijH1l;^iH_79TOzh*sBrtDu16hud6$&Ph7{9ZcwQF2HzWQYy*VUDl z*3@*3QBdbLk(0?AjT{_|lo3!BoQd#I#b@_z0wkcUC`AvKi?$q z(cC2e8WVzQVm>VXgWj`jPhkE($sO!v{IW2UTb{O70nSAk#rHM@Xh5BcnS)Ovxq}r2 zr<&%z#LiuG8skVKlbo!S{4x8pW&U?pC!`wLIK(t)$ba7L?3qAZ*=}&f`-FyAn5L@} z8Pi$LUhwpi62`n!Al7H=(EWRTChLq_beJ@gnVz0Z)Q*1UEh1u8OMAJ$(JT3IFd4{r zcxY#9>&S3^*J)fS-z8Ox2xv7b*VcA-EtE~C0JS3+JBo>?%b#VV1HWh)?Vbf@!e$?q zO8b*C4?Kq^f=oYqfs|9MCXJgM&ddrP?w-!myC2x~I%8B-ROAvMm#?NvHIf<0p-!@Y z-K9uythYE@cVbv~$LU0TVTFkj4}6bzK4Pz58yVG(K38OR`L@Mur*8CGKE?RW8`9)x zPQEU2=>}3)p_VW@ox>xg30%uYyZ*ET5UzJQG`o5abL%JZDZd6bx__4xkU9vLT{rrn zq{y4dzN4Az5mf6Twnz`?+Z-7jER^fMjVUcV_*F~91Y6hbXdJc>uuuH`n357lBk9Se zVQZ_cZCQN9!PatbIJH>s;lZT#GFQ~={(3mMa_J_yw^v=>kIh+{*KT%zG?7wHOGm)9 zpz;kYkEjz`d)Z!O(HAzNI6Y~Bgi2x2@*AA^5?!7z#=}bf>Y`G|F`}g`8g15M3k23C zP-dj6@A=x$Yq51wA!X}qy>2y@p^&^2!@oi^8U9~$v!GyegUea|vI?IN87_J#NI%lt zBeG<7H<^i&B5Gvxn{w;5*~1Yhz70aVhfMt7f@hq&YtaRAn(qBzK|Jb{@=`b#M45-$*x)BoM7W&cDWoIYjmoQ*f z`|B92rzazWhIV_e*9BRuv#()jJ0D@K&XAP6zetpP{8O(c$*|P*P?-35tIPd$LwKV? zgkzcyqguB{DHT1Mlq{dn-i-Vq&)29W+LEU>!n8MH<3klLLAy9zKO%~5ZJGb!w8vF4 zYFTe-ajNRiL8>8(4i(J431IQ~EjGGda!`%$y)F^~9>KaW5v%rVU8NTV{?)g@ zfq~-ULRrE^2OZWY0G@rsABTBj{K)>^Zs&ovud z7VQ+og6wm)wtl`ZK=`ziN0{b(L#5Bhf&#;}jLEOgX8zVlUq0-LEGZZ2*3&uI9k)e} zjQspr$0MLGR^LM3*}#Zal!l{X%>|DetbbGzpM33rhs5dg(9(7ih{uz|)(z%M;M z{a`(WXnlKv9qLr+0jcm**I`mbY zdFSl=qrGSOMP)ivD6p%dqMrBuuAn;0KR*t4-ogxuSCve4EDVqZ_B>FMna<#$Y96k% zUR_=6p{f7v@*Dm_=>#k<^LcvkTB98q|4q|!b6A0JjMNNSyx&UqV^}S^>Nt_ffY(4i zpsd=12UFvde$aOcG^JO?R6v3c;xSe%(RV??OD>hzn6A`Kb@K`*2L~r7M|9ZeK7bBm z&o6#{iwakW4Nn3i?TVd4#$enV&h+%KL*WA^RX)BPiK@;7`3(8zab`4;MOT)<$3KNm zoA%sXh>Pduf)UBhqsx~bUhYpnx@5#m$SAX@&d`L&jW}UK1tX`0xU%)M% z;5PI~xFaT9;rMuE$)Rt)`9qxK-uGxkqAmyXWS!F4VX@AKce-(b!}uN^s0RB%C%E3> z#-L%%#02@uz2h*MrQLtbV_&ZhCC=RyEvRj<~xEC13 z(Z(z&$P`&xTwGSxs+VD7XJrzWy!pZ3Cz3H&+PMc4LiJM#-*F;Tzi8p)vY3fNTXnpylc@Z5Q#tWB) z&dkiLtSptUcdKJQn2%4bjQLd9P-vjToF{^jszhmJ7T zwN5`tPC7pON_gubT&*lM_J?En1=E`upzr3dea2MJd{|I05WP~UO&v68amsBf5{`mI5oXP0LjVA080TPWLFs}j*x_lBY6*Rq$ufSGc;?dE zrE?v_Ai{?}_evcfXE%)ssO4NqYUP!M{pJ{mz-`5yD&7@K};f<>S2!!flW5|)W z=pcapK{jF>9U6ARq^Nk^wX`=H!Xv~C2p;w*kVxBmY9y5cu)o_VtY zn?UwFX*BV`JIPJ+0~Jj9q7fpbTXJlyuJcD*@50l&FzG)iSTss#vdr`~tijs7!Y>ot zY`=b4i>cxR*Q%3L;a6f4Z>HG#zi`x26x!3*#HK*$acMW=XwEME`nC3KjJ*2GrEfnH z2q!Mblo(|krGkms7w|TNX!6y@=coAa#HFX;z(e;4WO@2=;grF+qBn?;Z|)dfYDY8- z*VT4DZTV3-)-Jo6IMGT0F)_=XI*lK1P-+ATPH&>bsPXN6#UOE$8fZD$ z*@&>89aXvUIR49_sMN+;PG8^3N{3h`=ZXlGjb49#cLp;TcQ7ym&@mYqfDsxX37n-XmtNCBQp}N+PtWae1*>N&`Cj`%{}?pFo6T zUgj`k##zfk6&du&zHFZ25Q|xuoUS@x=Hm zMp8^hZFhGQ6YFo@9QRD!P$mEXV=@@Mei@0t@gUJSsmy_ABm&uD}eb}t+fKdl2C zyn_gj(62FiZoNN~pB8e&`$B;EYrdc|`-GTAYW5`+e)cneHyEZrOH<_O0znTs1kRGmP_~1&QHkX8OY&Fm+z+Q(^dF#3X@A@`gw&iIS-L z(qq(ng4%*4`;3<}Kx81qq;s!);MV)(!yV3y;xXqM4kW$#O^lX(F(a^lbcy>f)pvDL zb=noyzHX{t^N0jJ@5FIxMe?=VSUCp365REEZ%yA-C3uLO7A409?B!p!`v0+gM33b zQ0TG%hJJ(Zh;GC-Jm+K|w!|jRWc=5e{ziencpPJzl^-k7I65qAOkRU8QklJGPYN`0 zviBOR(>S5Of`J+|@_nLlZiL)WT~jkq(pfQ|T|CM9eM5&fGYtkZ0hKl-fEj=u;1MFD zccl<_rqQ?=e(>Gv_t7b}H)qGUNmA@HI2nnG3RQ6kqlS`V!6j)B?B=xne8o)cvk>@A z95%7W{f})*CygH!c&*U#lcWS8oe=;i-QQkGCBk#dVyhN$~3Z}L{<^v1y<3V=y8#6XTq?6st+VpmNfATKbj1P6(WsRxkWxem;bnJlfgJKc0 z{?wS+wfBM`T&bZuf6bT!d7w#Jf+oA^R|;h}F(V4vKpc;h7GAVhs8xz^Y=?ZEg%`7; zIW^eB_>wQ0tF~eKjnH~PcM~iO1NF?ikNkIjO!h&m(G0;eIzBPZ?$Tal;{F_QxrkQ)w#6aP37k4O^X((Ff+y-c2ndfJW;}Un9;9=NdP@YUL4*PAUrCM5(lDy0nU!HM)?8uSp^@}nS;(uH0Q9Wnw z+Smk=;%HV{&H8lHdR|L)#efY@+B!aIarN;jE(WWpu(R(?)S@Q^HX$*lt#cOWvv66A ze|6%EY@VK>0&$*Kl?`A|Zj__2Obn}vXmRHVuBp8t*szH^oDH?mWFiKYm)$&^1j0oN zFlY>0&)58-mzKox{yGunCWT8S6krB#76#saGjP(Y1-*Xv#n|_EYCL5iy#4fX1VRg9 zVf)nT<`z{~he)P}?$-_pI9w+_neIVMrH=frA=06!$PQ-F_n6MsVO(5;dU1uGX2FJF zoWB9vBdch(g&zuH-`&wmUz(L{N^0Mg;=V65X>3HC+l$G6+UQB5i^M04r#8|P_GFvZ zH9_RkMM)=4T^O0XO4_csD4h*EgdR_5M4K!}p^qsYa1AAqoyRO?FhYJ{_UBhl&X<=3 z-=G1T;U6>%lCb>HQ zX7P9_okJOaEjWWzgN+;TpGOkLnQychbyM`+o$v@E?`6=`@hGC9lQwKoPxyORB-hCc zR(EHy5E0M!^N6$jQ$_jtxokXW>A#ONB@4!M2u;uT=V3^M(20~2Nqb|UgL`6fBwUfp69sc_Z`k2-)i;ci1ue&SB$0VDB zpEUQT!!HZ^Biq|{#w)w+i~bs*msgIBu&{uZI{i-85Tc(oKj)!@!Yq0@=coy&>wF^_HWQ&IFxT zODBQdu7$WGUw$jy`8Wi_=rLCszqSHRkB9`Y#ViI1?&q1akBSR3x!3r9U@wsx3Ba7Ts^Eh z2>HZzV(gKL|E0;}?`S5Fc7tN3xtn--N#`*WEmLg?i@sIW+s8*i!PeFc4vg6-68r~^kSPrPXkPq! zBa1(}J4$Cf=BWZV)tcEOB0cx**TYSEx7gB{s4h$!kVy>y%T;!P$6olfhY{bz(+rNwD<==2PpX?OoN zO*#2L?bmes$s;^)VHPv~6HVw>U z$Tg}hV_@IbMD_N!P4)?R__(z-mVCxg?G5ZwZb??gvH3%gu;t z9;%wj$S|+_tuVv80;&o?P8a7b>}+5IlV`d;9etj;`5xUrgZFlj%7AWxp?o%y`hB53 z_=LCcAuhn5rJ^T7f>Nz}MyBc?czFL)HoXuJt6yp=+&;QN(pI=G^Lg|TMVwqKa}EDu6QwZMGV>Oa<|4fP#!FxLVpY