--- a/README.md +++ b/README.md @@ -1,5 +1,89 @@ -mouchak +Mouchak ======= -A framework for building websites. +A Javascript framework for building single page websites or web apps. + +It takes the content of the website as a JSON. The JSON file can contain +text or multimedia content(images, audio, video). + +Mouchak can also load external JS/CSS files through the JSON. This gives the website to load +plugins to enhance/customize the website either through JS or CSS. + + +How to use it +============= + +Either download this codebase or git clone the repo. + +Once you have downloaded or cloned the repo, load the index.html file in your browser. +This loads the example content from example.json. + +Use the index.html file as the boilerplate file of your index.html file. +Modify the code in the script tag, which loads the example.json, and change +the URL to point to your JSON file. +Remember the JSON files is loaded in the client side. Hence your JSON file should +be from the same domain where this app is loaded. +See cross-domain policies for details. + +The global object for this framework is exposed as the variable M. This can be +inspected in the console. + +The M.filterTags() method takes an array of strings representing the tags to filter. +It returns an array of the content objects with the matched tags. + + +How it works +============ + +It takes the content of the site in the form of JSON. The JSON should describe the content +(in terms of type like text, audio or image) and also provide the content (in case of text +the content is as it is, in case images urls are given). The JSON should also describe the +content semantically by giving it tags. +More details about the JSON format in example.json file. + +The framework provides an easy way to pull up related content by just specifying the tags. + +Backbone models are used to model the content. Different content has different types. +Again all types are derived from one base type. +Each model has a corresponding view as well. The views manage how the content are rendered. + +Each page is made of multiple content (content objects). +Pages are also modeled in Backbone models and their view is managed via Backbone views. + +The framework also use Backbone router to handle client side routing. + + +What it uses +============ + +Mouchak uses HTML5 Boilerplate and Bootstrap project as a boilerplate code for the website. +Mouchak also leverages powerful libraries like Backbone.js and Underscore.js to manage and render +content. This gives more flexibility to the content of the website. + +The main code resides in js/mouchak.js. The HTML markup it uses is in index.html. + +Javascript libary files are in js/lib. We use backbone.js, underscore.js and jquery in this +framework. + +Boilerplate code/files: +404.html - error template +crossdomain.xml - cross-domain policies to be obeyed by the client +css/bootstrap.css - boilerplate css +css/normalize.css - boilerplate css +css/main.css - boilerplate css +humans.txt - write your own credits +img/ - directory for images +robots.txt - crawl spider rules + + +Support +======= + +Email to rayanon at janastu dot org for any kind of feedback. + + +Issues +====== + +Report issues at http://bugzilla.pantoto.org/bugzilla3/ --- /dev/null +++ b/example.json @@ -1 +1,43 @@ +[ + { + "name": "index", + "children": ["Motivation", "The JSON file"], + "title": "Mouchak", + "content": [ + { + "type": "image", + "src": "img/mouchak.jpg" + }, + { + "type": "text", + "title": "What's this?", + "data": "

Mouchak is a Javascript framework for building websites quickly.

It takes the components and the content of the website in a JSON format. The content in the JSON can be of type text or multimedia like images and videos.

It also has the capabilities to load external JS and CSS files to customize the website." + } + ] + }, + { + "name": "Motivation", + "title": "Motivation", + "children": [], + "content": [ + { + "type": "text", + "title": "Why Mouchak?", + "data": "Explanation of why we built this framework..." + } + ] + }, + { + "name": "The JSON file", + "title": "The JSON format", + "children": [], + "content": [ + { + "type": "text", + "title": "", + "data": "{ } Explain the JSON format here.." + } + ] + } +] --- /dev/null +++ b/img/mouchak.jpg @@ -1 +1,375 @@ +JFIFXX XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv +#(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y + +' += +T +j + + + + + + " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# +#8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G +k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 +uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! +zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmC    + + + + + + + + +C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +d| + }!1AQa"q2#BR$3br +%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz + w!1AQaq"2B #3Rbr +$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ? +( +( +( +( +lEQi%OU.Ĺu+|5Փ^^5~Q/m?;7o^n?g>IuxRaHw'ZVُsr˰U`G4 +( +( +( +( +( +( +( +( +(;[8뻔#?Zi7KsPZe-ˆpTh-{߉:ċ+HeZN]׊sT@( +(G,6e>q@C[ծԸ)NKz#d]"8iBlJSICٔӴ eMc ԺrFii +)}@OP[)E ( +(j-GVbOkW _X @ԧ?:ʭt0w@+7ļ]ü!UZꚗµrbݺV8RvB|bvo +4k?5O]-|OxZrv$bvj\E 88߆8y^!NQPiiwvmyCsA +( +( +( +(("tUMD;~5QJq/|DԮL[ +4U0nno%3]VzjB[3B< +Uj_?S+^xëj.S2;rSc^~ +y.u똿k̗TpwSHNfB* +2|ԕTԾZm6Sgo??+=W@%_iJH|V,VPA׃ٖqfP̲8ԤujN}ٽ/"7G7῏Hmtnbrp[̲2F2A8zXyÈ0T?ߒv~J}3)೿I؆-;ój:lzmuȌ1RǦ?/+&+:r89M.DmsqgƺڬV;Vmڤ +?ސVTq|Eԭ٧ϲ<H𽗎>K״]F.hwVQ3#+`5( +( +( x=1BGU<Τ5qq!wv3Iqۻ@P@cJg#rOEIUq.N쵭cxƞ%4-Kk[\oc~M! sJNLcg?%͗7^7%+ۿ MN'@B?ڍObke{K^Ҍ6Zu?K_/|l~- ~'h7bN#21<Y c)L=H=ԗޛ>`kE@2F!AzWt'}V.S +( +( +( +: f>v3?_RҒQΦ^}F9c#xHݹJȃq ͸s + +u*A:qpەs3<OsߋĿhxK/Pw@P@|2Wa"$!YUz$oAjO뷿U/)?ewC~Ot-OC}EQb:ʥIjms;#>Z0x_ž0M7ִ'"K3/̒|*F3W쳾YJ*M^I/Mj*h+#/5[QERd#>blz0a)h֚hkNsUfVWVLnc@Vъ3n??]_VÚn+QN?) +);azlw;X(VR\鮭IjK\ Qө}yx#?=OPV,5 A><8oFn>ʤ0 +(hej&(V,tcݿjyQR|1/e܍h//( +(>u*3Uԯ,?i?HԘQr1oi|CM ؿJ_掉JyGƏ9]i5`ik.kI!d\/K9"5reK FMn}4It[=+|]:~_>xGB".fM.Xy#;22ǘ  QR JrM{WN[$Nz_3}^,wgeaYi?b#? kG%i*G )^W yWeeJJ-|~LQJ2Ks//7"4_7&K fݫ-_j  +( +( +(Ҁ&_6%MOZ˰gs¯rQܨRz:ݿV/ =ǀ.$g伳a;O10vw#lyuF)Kmqplm*5GVyDkm/Rf%l4ɗZGE>K] %%q"DT`ӰKMLgͦJ˟o nK/j*CK;vKV1șa[ +:RѦOsEVZ-xCBS' &d4:'? an{;9Y繗὜n++'N ]r~ȸ}K;n[~WwvPv?RHaEHQ@P+,}P@P4'R}iN7Yr] P@_/(˹/,^^[r7oP@PY^/ '?JƯCS3Oߴw?7 +M:mг\r:Ϗ9c Λ̿T{VߴG_?kj-J$4Cq 2@ȯ$ |7$GO?71쫶Vx FاkϽ7=OJ?ҵmj(S7a(Wx/c?˸]NόI? 7h{{;A>ME$#W qOvBfȿUz:tCG'g#PO5æG=D/eL|m&eU_?bO9In#bun-2)#@ Z_z'ԡaz4/a.y>x>[?k}$/駆ve~U;I_EO=؅Mf?EO=%t[kʅK۟AzҎZO_R@Ix/ǭk yF-\3(:ZnqU~ދM+WΗ&~ӿ6|O?iI^?:eƋ O xR+e0NF.",_01*Y4g 䧣k;%xK'.[~=ǟP^hv<1mF]I_tJlei ~ a9Wc% =mt䕮S?Sgn g{ hVN,ɒ[%L7Wfl3}:{_b*TIZ&nsP@P@P sUhbIQw5qq9;~?U_^'x\a%¯3kڸpVdVI;Y[hoQ;{_;xT,<+:<[Uk7_-x/὞eЅ]Ψ(oa0pݽ؉)T.PZs#szA^I+#mݐٯC~l<%[=gQ5;aR4 *N-!MWT~_|85k ݾ-a˖YX@o_{,&/^:IE/4[;=F~&D_S3.?F~0NzV(7&q2f 20!HUc^ xٽ<4<45MOz%/v.7z_U}-EJ:j P!Vxc HjqN6pP~dXhʴC郧JҼu} DgP<,+hb1ٜџGSԟFl1k3 3ewye)M}Ji7 7Qno戤u!͡K'mgKK~:Y5?xnGRlqNa1'g<#ٵT]OgVӆskcMkY5a.٩2ęqi'Ξˏºlr^s#d`&aKm_Nw}_QoP\\WTs|_0SW/-E< zFS=8De U8RT4XXdw/ط +^[/YE}ٯm9OlWTkPԇĚK}eZtu4cA&ǩ3#QW ϕL*,\MyZW [ R&.rKdc-@e^>Oh.ijq~tcBԿٮIo1o&n 9Atr߳AC>6_Q)_5/ ݍCpDD]֗ReG mA8itDev}s*8t$(Q2T'_1uOz1^QkEc)T3 +( +( +:Ʃc_I+r%-?f3h06b8ݱҲs3u{?ϖ o#?aj/Z*3f U ԰kQ)?c_+7dE._{*?f|; ]fGVasbkzlծU[=Fd?\|1+a^HW2rAw9=k3VNQK.S֤ԥyo oW9?<+Q` m[eɇ?*E /fx4bKF/Ļ{v#<=dߊH~?h?:xm|M\pG3nt?1n + +G*tϭg97y_mj ד+HtU`\xՕuSp}Zi?vJK-URa+Hٯ ٲֲf O 1s8BgoϨxQ.#4RB($$@O~:*/]/MPCkS5emwǾ þGm>Ɋ/'˷Q ʀ0w2rʘa[MXjSnRg !1?~<8=B3A(I8'0I]tZGn rSg?F^&?~xK}U<դ-PK ѐ\#B;W-jv}[{gcE1 1Jj +NFAP@D.gRväZ$Y͍~uĭ#rDz+=q4HIfcMgkoa}8Nc!ٱN)k>#|?jU 7G&6XZIZ(yv?\F +(.7COqnN3Xv?$V.TȔy[ YL`ޚ蟶9|NT?&M߭vSϳZ?Sطf⯇߷}b2w:UԚ)u F|b(p6:B"1xliWjMO<(J$.Oe|i'|Ku6gkëuCG-b|TWK>iOxßؗ}LsZVMj  +($mH}#B 4ҳO?aT:ES} +O?߈~)@ǿIxtn.N!~/ >)֞ _⋝2kY^(Y +?AG4< + |>?˟sek<; O}og{oЕy](e4'~p~ʿſDu۾Bގׇ6)˧}X24rߺ?˸GRʥ:zլjMSIE]cs[/ F|? ZG=(9!~N׀[ +83|81\xfj7Wy?a +s]Tg[c߀uo +~ɾ`v/iyb o *K$nHTU{'xW_7i䚌V{볛ZiWIyy#?M|e({00ӰީÕjp՟3i9m.ܟ>𨪵4֎7 +(*u-6 6=KE0-<;7`)"ck8.zI[4}VCUK*}S |RƤEe08)r0xqXn⟎R9܆`d9z(fQ'uv&_u@oڕk_Fmb8Fzqs5$rI?Rh$y/4=&2MP͸+te;Nr 'ˣ2$[kn.F&NFuF\de~dI8rL#SGR|E(cT:̾cPԠ5)m/e| Y￵'?߅&tsͻ[:gL9{3;E+2'YNc +i%>0qs%Ef/? cwM;>|1Bq9~9rqOXHS[JѯZ0Wñ9Eّ_^;9e? T6I;od٬@@?AKZ7пoS?xuWbՓ KY("]ܖڲ{E;f In~ +i=G8 7)Q쩣o?_&%'iN :o/z#?VI ''J0[!Q*6?tgo él;tE߃e }Z U'4k7կ|E,N*Ⱥ)2<8hP%($u`K/S쐠PtDILȫ3:abQЫN: +~?|x+]L Mk8A\bct>热{cy`ҵk;R/Xdy"s-il}2x_)?~7:#ߝ|_4x{PFR2̀5J-h6zӯqUp黽4~ +7KP/>"-crk=>Nm6H*稬'bZ$m^7sL;9]W~v=ZOյWPN[ 0yeL'?1< י -j8!kݿ3Uqzo髜( +( +е268VO}A$!>](j wBl>askt Ќ ']Veͣ7 m"1F-׏~3VveJ~ǿxikzs>z7pݘz~]U˱ +6껯c->q\7őtc0tu}&>? V9c(͇y%xGATcѩ5f>/H?~3~Ѽ9M_zY9g2pwst1j/sܟ/'ow#۩j,vu]Gq 'ҏu5lٝS|[?:NHq%&Kn>סB<e•ZM$y_C>j?>$u mmĭwX79>kqYGE;/~'K'T65|5eDN<0kZ,^q.ay}ב_zR'/M+%<5-?F6Cx[K8QC߅x4W;QǀF(xga, [_ז.#0ayJKV}>qxM7/?= 7rPw#_e +Ԫ^{/_[H{~?Fd8x2__W}ܥ%;RNQ},iiJc [Q.Yɚ9\EcWfdmGOIJٗ52.W̥ "?/x=>OH*^Cu~٣=3=mV_ɿM/a!#qm@ٗ 0=xGߚ?}0?_[ g/So_#>Q&a"1|%ѢLjCu\l,m;?,S?!e?><^8Ho(?S??F_+OeO*]6"vz]NԓNU}e%M,*iR_{2^cnV&9Ǎi)~)|1uw)xSZEEVwkeSs 2ahC^T[_Ⱥ8VWy~gr_hdxLӶ@yҿ5FQZKsTX)ϯdښz,zrleͱ 0=֦[_]`_L m->%|߱7gs£\y'֩wl݅sl&E_eW2-&ߢM6k2iQ#uħo0XݟW_ O3A/y?;ۛʽtkwn #! g#N~U?ԣhwWnuB"swpH ˆbI^<:曻;h{XyMqO*GyߍoM?-cXҴ k؈ +b MkJZ܊ME2Vwe4 _o7~%x4Ğޞ5Ynn!'Br:gp;B5UwNǝz[.g\Mi2[~>|&psq}j$ ;8@*{bh +( +( +(7J?Zʮކk( + d-OT缎Ve?JI%cRnW#]ORON>\=um>t?ƎX17 Ƀ.f$cŻt-ī3M|]ƕ}Ǻŏ-/}͑=A( |.m_tY95+?[(N[#ɿlۿf?I+k.{ ~-:[5J 0>No׭*' -4| ~^-i=Q:[xRvR;V +GɹԗY#U!-Mw\v> х.~?gԼ3Jh,MѸ1ci(ècW+(Mݫm{1Jv.s?l|1_5/X6sj>#'(ҧ JNY~yW8vM仞DZ-ׂdVs >o,Ah5x7Xk}ҕ?$oWF.- gYV5UMV+xἝq^cQN#>9!sڤrC)ِ!3Հl >Y\T'kEmI{Q>O0|R'S.~4iqO)'ā03o|ɴZiwoCyKMo?g5cॗ#>9okI X]H>G  @QП=(%+Zb+ԇ,_^ ?d>vDx{Hge3.,ǻT9VK5u=gR%u ~~U*Ln-5?ʍbh +( +( +(: F?*ƯCSN +(nâ]\a!O~*D g]GP@P@PF?oO 0bOu}FCmkZ-m^vLD~b1҄RIF)-[~U(7|9o_=߶/ƫKqj$s49#b99(gs`iEhکuizF>w:VV~l-yO&"PY$2M| C0ǚM[VoWuJG +өbl?b35E]hm%ӣfYd[&0B 9G; T򪲖N%+KdB}/EA5_I.YcQ #pq<'*abcԬJnzʤ4al\dMiyӹÿïXx|%Gu7whۺ B/,ی.y9ͳ "%Kŵ*-JkFzS^F;rɓ~ߴ0?4E8o6xJeeaŢ OZP\5_Ru蜽ɿ-saI%&*ʰt"V)NkFQ黧c̿i2Rm>&|5Hy"~k~YDH o +3N3̸du>X&oFכt ܺ N&O~0xi{Cմq-+4m8 *rvf`䮌9CJAMp؇Z( +( +( +(;Q\}T~CXU46gOYP@n mi9`VcY8j9B +( +(>rɟhٗF/vǾ_VxkX4;,s2ʹC˖U NQi_]|n3~>OƍPPK{pqe(ʧֿp&y<~j}[/TEI;GDyۗ4AGOaeLPK6y0<^UWTOIzV_ʣ',|5OOѽislڛU/W⥯ +xNb6 ,exr^m~߱߄ +|5 i^)4RC%Bp3aTG;vS\wwծ9&exEr^+Ae忢><;? :V^uqgsѼGFA5FUrJ5Ѧ_LB\*4~m? ')M;R<=CE񾑧ۙ5_OQ||вHʼ A~,1kRqN&NjΜjIލZ/II >+7_ +_jsN9-5?ʵbh +( +( +( +(q #ܱ0GU+3` +(s9SlHS +( +(*(D>T3z7cRNU>>O _x7za~_/x^j}Ib| O@k4n>ca?ςW-񎙢ڋFRf/4p ƀp70&ZQuӼ?ˡRlSI++}U|Lд[;XAAIڪI?~S9)Iտúq卒:}O_h4_θ*5mcF+}MxOÞ,CCsY_غ~kyP;2\15ؘb)ɩũ'4ɗR:9ū5>-~(^ Oco +3[|+u9x~6"( mUe aajftogu5JQIJ]۽K[,J_4z|S~h%[T+5ّ3A8+fV +uySW<9[ڻ>ui~||O/_~AJ Qv P-8c*Ʊ,Um*Tr 82| +ruyݓnQ\[{MY5<zQImm''5??3yh6:A2q"--NЬN TWp8 Rzsqm{NT(MEJ鵮W>JJϛގ ީk;[C3mYx7Sx]}AIo8A%v]fsyų%N*6ovn;tH#Ȱ%9_i[]+-/ya/?_x~2"{̃QiYXǶ"Ҳm.r1_8|!O|;J+i^rX Rժ{Nz_# .5z>⇄|!uܖ]YtݰZM=;^:%-bJ{G%Xr=61ĵ +( +( +( +(A4^Wmv?ѮjI{ר4 +(<W?i$DJ?,Ԛ馭ُVfP@P@5 sJooQNp9b}1@ aG2: \n5 >qǽKE(;|?\F^겴mrWm-_ݛ`甜(#|,j?1݅ 1xi| *pU#ͳL6O*bmK كT#J_n<"?wվRK}ί'ܻXͺ;BN )\M-_y8 URk_$6,>> ^&W1,R{=_xϓacN?H|gCG.ZTQk^>0YK X@"oUv>I[﵏R}E~?eW[ǚVXDWan-A<9dX!LJ-m$Qz5ZcnqEӪF|שxKm> +lN]A@㫮0N+c>ϧvcq<8XV`狓U;pK|AUp^4RAsKz/XI~OB|u߯x^kgXbAo:1睹77s*XW~8. FϚ=\5΃JZoK[zGGW!<shpi׿ѼR 99qMZU O^YtZ$jXK/˳]~OF?mo+Kx O7 W4yT8 $.d5H.xB=N/#vC#R5p( +֓ap$q4hFAwHԼGRPG4S.eWU@ +( +(=+p}"0|$}FrL톐E€ +(/ծ~٪\]g'fL]qVV8$&P@P(,.|QhP(s/H8)nJZ7<7rl1)|AvlSr:VZ,'2~U9]O|K?n)WkO 7"_t~n5G [-Ľ^XTSMk|77'D,$"eWD`ڡ9 5'>%S泲M>n\72yWm/h< u}.-ll + ~'_%laG ko}Y _s}{|umdZ&+=ѻLtnO'#φ/V--:_օǞг>m~ M[ExLϦvpGu`@9^AkW=:eޭyce Vd$:ap|yLdG *Yc] + Jv0u#KVRvJV,ӵ37r^ꡈ\r3pJxyN*2{;hNsQ?߳l.Ox-źo|d}=;Tp::zK~\Օ'I/D|׆iwRO7п_焴5>g&M~vH㒼jfgPbhfl,N&D[_ikI|ۃ\a#IY'U]ʥ\x?i=ƖZE5{9M &h5N2#'}* Z6r \X6n\33JMO纵١E{H H'4Нb +( +(m4YS@nzQ1,H8U}quP@jwdn..aM+I-]]gP@P@36k_KS"C+SV4zֶFζ͵f0(Ili&KieiřG'ʪ:(;e|ow__1wR:i3ݔҮ,--6 wVD#ey/q`ו3MA,6)^[&¿X7:L\ی-Cג3HFzc,(2PQ[V t~CD#E!HZZ1*#LsRlPonن7LGǶ+ {',{h]zT|V#`27g +>ZV|T]i6N29~SZx5}O앏Kе7LmYmjaI0߼ +=q۞1_ԥҌSq[]l|k,Lܕz:xj)m3#j^ b&yoB:WeY.W~?3^)WAo5Ȟ2I}cóXoQD4[2oа)_$Y֍ 5))C޼IkI/6Dך<~M,]ROK(3vI{a+j&+ƿx~; he[+~Q?6;o Jܧi1K\y@6cS.؏4$$Vz7I}$-SF\j_'"?҇-M3~Nx-hq6+v̗rvc:PFF|Mj|#|5guީҧ݈f-$o-j81Ϊ8SqWDTiq Jᄅum`"JUJkClFtOug5ǥD8z4 \, c?s(c,RPR(~mVh(VqU,MKT#m[^KS(w^ @M:A%>h!Y`ZxV7dWtc_긼F>3KHHUk>З/.t -J9l!ڮp$L犕Lu1bݺn`\,cB\}?5x+MrĶϦ]h <rG_}b*gqrk}4eI/ .=Ɯ=J9zQ^4__IS??dTOSMw~[}͜;LUٟh ++?)>t/h^)09-j]& $ccV9{h 5hh^9Č@c۶{SU.[_]r6fyJ >l֢NŨMm}J~28:WzQ-5$=oíM f : +b +( +( +wmkr8`}5WWW9P@se٢E?TF^Ҧx x7Jt?XktWP$R1x RPx3իBxrUk<H'5'-f;úK7z#}TX~Hj~XR=(Կ?jEV\ʊsIO >ht w[`b.{23~:|?i^iU~ffqO/%uO_:EO|6jSߋn-VO%u!|X%G j߷J[?8-?ݲ<3' Z_"KMcĿW'ZIg1⹫5 KG8S%\ӥRq~D"7?^/Z;$I$9w5*r=6_R=_WuȞ ׶̷ӡ;`k2FKa-m544eݎIQuj=XS(GdixkZ߈|AjIcy6?Jqr҆6JqZ3^ m$ެ_;SM<|Ek:I iyniGa޿J3<Ϫ~!!zwך𜕾3 +2 +( +( +( +[b+:IbGE: +(9_;8A5.=w8P@P@|Oe~@v/#,& s~?o~&k}ӣ60^J1灹AaSG[Ov`O(Q6@?iKW?ʡT~*.1< >( 8$v@M{c- <͹x}oo % v~~]6zgNk@ +(M=(;8o? ~:?k6~*Ooo$)0#mH݉r#?K\L5?idQgtMyUUͰt*(՗-ݵu%n~Ҟ_*~cO~gT5b{^ݡb AcIA@^ +M/Xt?iVSgocd,@=p+*ѱIQ!@P@P@P@~܌]xB;뢭f5 +(8߉gQoKcĎf0 +( +(&ӯoD=E&4]7?^?hXr0I!S,.XVHXtfFkC;UmƿԼIɩ .]NYaG=ƶѣk8"eЭxn^{t^-Z>3eSJ_[?s}s!/ᧄ~%XǦxxm|=-QOqy$lǻ>G`<P8;7f/|Ssm(nkk\S;(vO_#جc Z*OiNb^X\D7*}K s\eIH'dT۲ [/A4W>?'[rҿ~~I9'5ۻ:@'*-}j}aʴ,(ٙyTl/0ЄM&vsb1pIF=۲>/ߵſ I5q\6zEuXiW^;jWb O U\=Pg87(K9i]M=46M^)?y==9u;k %cßRowoGm/Eە*7"?>/2ޥ~FjJ5E>Zk&18̱N*Q>my?[Z~ W|tG'tυ1:;-:ڄfQdp7Hi %WTӴɦ/熩_޷OZ3l@WJVvڥgܞSçJQN/~eV +WaK^&"U̶'p3׎s s_PI*jV2^0HV_Nj7 V́KF}G#nl[Gs"愼2k/6̨`j/8hݿΟ ov<#g + &Q}[ºUwjOOMve)>prz~~[[`d) [A&rw %"k{ ΥXK_b_+G)oDW  ׌_G|Q_?w0Yҳj2zv}٫xa)^X>Uӏ$f#Z]!oog_ o][tPկ?ZS4j 7؞KIhj\2ğYii{T3}Y/51_f9vf#J&%VjY~_TO~r_\g>רbWD<+|MYm*USy6Z8|Li.wKoT 7𗈡M_Xy]{ƻ&8nz(SIC ITeyڝX~iU+'Z}>oooKҴNGt,-Z±@*T7:=տV} cEF*rUCHOm{X1e:"1?;dYYYA/QBޖs>>Y'׉ߛ98|H<ں  +( +( +(߭ڑr@jdʂ=2N +(ĒƃtJVdP@P@XҭojÉ'E?BFi7eq^I5YQ5?O'%s-ٟs-d%"N$'z1,GJڝ8E|/yR?CkN=&ݐ?.OSL#ŷ.+q$z^[m<(fQ2~Qa8[xOѿl@h8O/EPtUmv]H +(BL$H?zB+E\M#D^!N"8̎>g Ӱ溪] +0ҵω|7 +QK x./QHfHk¬Y_%g(nK%hqK䞉)'~UJnk\rOo+/ZV"X:o](( +( +(:^~% gU6+sA@P@u?]4VfP@P@^Ӭz?O(*e?ൿ+|V?ބگ_~>>&/H;9,,ew5x'\|'>FV0'DH} \FK+ĈTHOŮ1_RFMi7fҽd{l5QK~^[6;{iO$RA>\Wu0OUֺU跑M~G!$ oNBYRI?+ooPNI=I%P3* ԓEoFG/%+Z_x^B%ȝH.Y#V!]'BK|uPE4W [G.K#'P RbSs~g+ +S7Zl?_>vɾ++2e= VA!liMwJ^vyWQ}䖯5w)?F\7 +v[ wmV]*egL[I:OktH,s*;=וٽ/v}~/x +T?kɫ{m/ú֗3ZCI,Ai\;` mӔRҍjЊI%%dGsMN?D]JV{˓Qv$( +( +(ՏFe%$Gsw*ѹYP@p>>R%krVZ 8?'ٿÚ_~4xt];Y.iOi4&{0##l ^P42|Q]|5UIŚ=έxvOᡰ]Hk1#J$qrxgk?m57.M^/ttL/.$7 +M+5,p$#?ug2ϑ~V0%H$hfBVZa7Fe9R;^n[ կ%yt馑cWsqfvSQ~1[jRKm5u~i&i'D4߱߈'&В [^Ѯ =D8ۂJsX)cf5.Rq+Iٯ3X{ /cm\5Z}/S +6r*x_>"ޭ&"`n|BW}xIb#ZM2yg}{[S+|Ij$ڳv=MGލau_6zd>cb+VY[ +b(EGKN9ne17+F}f''Z TQ[E}Uy;Z$s'*/:OYo{ Wv-q9-H¦+ GKդy?Cw\>iZ_ůs_AN1Sދcͭ9%s(y{~!gÛl} Kr!%e+Z7(6eĸZU cNUOC"Y?n=M2sW/2!- +VZ/X% kI_%~,Oڷ + (dO | b!_Tk.fCЃrTt9/y4yȳLW2VZiAZɞ>͞=/-k󵾥yxVStIh]]96ֳx?Ofx;PO~T5KA P*!dMI +.5 ß> CO~Kߌ^ $ɨLmN0X#:+;ZWm&yo5f&;OhxQuMC~"(5KhYܛݤciKfuǪ7<19/Agطҵkۀ'wHѪ(ڵ+3~]Uu/ [ +5XxZMKQդ9 ͓K:CGwo2Rs"eJ}u~պ?EhOkv:437SY]#3[ $# $tݽkGZKA >=EGhRW>*h[x?nhV~ /q"J`ڱByv2qըK+Q>hq Ok&CXNI=Iwg |q]8Zht'MR'mVx/#66UI+3  HNm$9F-ݜX6)ON2I6z/T<Qt |9Y1d[{*Gsx ;`m8|'#VN*ɹM-]vntxGU ;JI}==7s^F~S þ |Ot8"rto@Al~gIV-' B;=<G +fqzq>Mozuxw_ j+2>ӵدxP?*TsW2Wg'GM&bgA[?_95|OR_|M\+/كlX'_ ?rie2Fq}X/ӓP˲7F>KGu^9P38POS֋0>~|gޓ-C,.%.pb5o%3I"GխbchSi߬|}b~miYu'J^Ilo_Dg_~߲_f| kM+A^/_v:_]4zz -vs;??Ti\63_NE#H9ҴmR1efϯ{X>6okXK kh?z浱;[ J~ Hq\'Oq-Bs{| mO>#QN +>S[~ߟu%}H5V `N!i +}V AHXzT}v}oᇁ|4zzg%i|mEH'8PKXI$vs0PDo~ -x-IKA - +>P +泄;#%8| +xSz5o8{n~./xQ58 73qX=TFyl<<5oS^?~#:~ +J. (.t{3:@I6E.qM7mR?YQq?D7 u"o;UO^jZsL5u9ԣ*n u4Ȯ8dUζ 8 fGQRpti]Z2R٭S<5|X?c\6> X<H&c%$w2*$FU!Q> 8.;;y.f"vc a; +bk⦧VWvۇPAŒySm͘_.->Klm2H??ےrh28BMg/{~'G 3X/>.sc 2Q0-cY3,FuGInM gOJ3F7>GV_?yʫ/:yu`dj_ +iai.t˿_qGʟ?~/M'Gψ|OÚ BO*/ (~l[m/x;ŒӈBx]zNitz맾Wә|~w<*/Z)ankm?xmڀt}&"j( +or%<& +V/~OҭZW}Y/[Կd{\ sT5oxzBg_F (V*T)EA'-Oc/c_go'uⴷ-w?d. Υu,y6mAUاެA\{4qNptQtu(Է;h~*Mb](N߮ + ~wY<+ 4gyjdi]I 4<;%'pw9*MrSAM9!sϭu:ot1X]чIPu=AeK]VIZG>cs>?Wִ|g j&,7Zl>k7Fa՗b׉dNc%[Y;^)}1ZPK}̟m/~(|B mGF{yxʀhQFv~_f)p8 YPGQnu$%goNgch*>"x{-zY_ 迴wcK[OlѼ]lcS 1K[r@֎c9^"W[0 $fjQwwmZQOi;Ԅ1pK' +N񕺯ԔxC6.\ΙTMdۺ4>~'|$Ԍ_j+a*A}F?gڢw> |^*^xG]V-GW7M#̭!B 0`qp2lgAb&97/q+ROeMy12bʶIMmu}oKkhšƟ<ᾦr>"J`1IН+ìS&QM4ܭʽ􊼮|M8F0Щ 4|ZY^fum}gxUI R\0͜@)Z8wZvdm)Ț("JVقio.ج J|!GYPIyդ|UHO4(xy;|b'{.B=ـ*p,/^38YZ/?(ga J1[Ɩ(Սp޸O7ךV +rO>Xa9zK%Wg7u?k-NLnU&m{4,l.l~FUPU뵉 W/i-ZxIcmd=3w3ynx^_+dI4F3$d6!dSڹ]#/7?!d ~ѭG--h6MnO-gi,Ev)<2peȒnθ[o>_lڝfvjxG3Ԕk%Cד&z͆|ctkdOAooof4mTE\P1sMsjն3cIrZK|O@SK>F8?pTKX;FĿ \"s\Wښe񯅘dk1~ Y}S{Hw#ǾdꡏFSX(;Z/nKC'Ve.c€ +( +(onXLĠ#Zӕ+B]nsP@*ן{_?_'5-1u/j'4 -|Md;wvj|+]$|CckExG];JnV ++6{MܚC'Ht:C--e q/{ +d(7Ѥ:}WmmQ*=;?o7zm;]CJ/kG\ikttN7%r᱘yaSdMvikTQT&iٯ G^>loؗV-]>ŷuOF/$s}OUd+_q9ab^ԧN-+oz]]dcj,=j^V5;y=$s?5Th?O?fiw̾#GzWs|M?iWڊ{+w +~?|)|ycZⷈTjGgaxj_Roeő@$PIOx_L0S/˛EkZRc%ڻZwL~+p')%ϲN9Ϳb$t8UdL>e̸f&[v03_ч2?3Uz}noZFl[NN삘 +( +(/e܍h//( .cB\ +J*B<ұ0C)oDPC +( +(Uԣ { >y@Js #9VfPץ~br)>t#uiʕXFIi]S;UjpvkT韚)NZ~.טYo:m+6v.C6jon4[, 㻥{J?~|ˣG+SX|k=G4`ůxĦ9Em Eh +(s_K+pxMjN/4%w}Uz_#'Z*sRd}ǓS(|2/v ޥquojx$ 78Xk^*q.cV5*Pi%hJPMw'pO)&m_vNd?hZ }M&/mg|76LdhӢ,ƣ:9ΪƥJ6Q[_iMK/r캛:IݶI~^/٣ ρ~/>kz" 2 ֑ܼE̍$ǩ>6ƕqjӄbӓnJW]їRF.vyo#q[f;xoo U?uY +yJN@ ;xW84ۼ~[9>KǛW}jU-_d}uyk}jگŖ>.>%AYS-ht=47)i :l1]ù]<Zp)>}~d?,Nc')}tKZwu5̗wb}}VV:朹N֨4 +( +( +(++mF ?4wBiIY}? ~k9} tJHT@u@qh?Tn7~Jؓ8,ix^l[BYCM+"-1b OWL^!$[jQ;*}̕Qda&?hK:>ŧūp}A*h{Im__WO[—mk[KO+QXz`OtIsDR?o^K?~i/B^^GbcGdmѠg!eߊ~߄4 +YkhZ XJ$TYH#= )-D(=QOm= mq 2:0!AV`Xʛ[ŏ7>'ʞ&_ICXX\ӜIhc8#42ꗲ0s;z7G~O U;}gj?I+ ? ohďd^i>Iα +.NP:_/js4U8+^'gS꿴ɥBx7_ˉ 4 y!+~Nq /3֬nH>$(۟ +-[x6E g#z82|jt0QYޣJM<|ogظԮG?,~Ww| <1oq^YB]j3.-qt'Glg_Nld՝N&rzza[攜1P@P@P@_/(˹/[ +,5ݑeaV5'uP@P@P@Eygmn֗M4wBiIYG|y]Y }ƷE-:N:-5?ʴbh +( + +Aja>Eu*~jYU_>x\ ֱ +R) wnCB&Q6\bޯc?ljb7oG^C!xIs,Q壍heQN@Фsݨ$trIoFR:84j=\b=bO9Ƨ=x]az Z9c9ܫ,敝Yjch +( +( +(:?A]WS)QX}~β6OVv0`uP@P@P@|Q_gc?"Ն| +R!6A&ai[c+Iube$+2|QH|E?YxN1X,瘁Iiqo +chP=u~#~̱~ٺWwOMW-6LW4B[`?+3R):FrNt' Пf/\^x|K&xnL)>Ts!\GjI=$;dPџi$YsGțk1G_FZy~E5<o*Ək'gXewI}GRcW+-ُ~T2ݠV /v6|94,XTYrI_c'94 هঝ^#ռGrw#!w1iYK|X"0yU$.N[LA@P@P@P@P@SpWQ֢+Xa{R#zt*X!@P@P@PWYt7%'i|qs4|2*x1#o:oEA|S6qi²A.ՖA`#f5/c^ +p\喩UΪ'*R.'~|y7?s =_'\Y[—SKkYPt276Wbڳ#DG~3\σg1ENA|)7<#|OOd?\ch9XT0s0WxKt*6Z}p¾>m0i=í.2i5?:Uks)QxN%;NhEʔe21GR<9fbP@P@P@P@P@>{Dд$toC~O|?ZUR[Oltƃ'ܞmNEhOHa@P@P@P@~OxwNwdEk0dO ݴ~j^nU߇̠MU)E$E28" +( +( +(@,B$Pj8hE?7?^ORZ9t7φ&zd?OYAu: /O"l-!hOSY61P@P@P@P@P@P@P@P7:}ݔRHtka8 +'N}cr?LT!҃Qᮐ' +jt#ѕ&c0WV?4U؇AeY~s?b^d/'ݳFve>dMJoD?֏iv%|/e>¯N4dAi{Hwe>ı įޙ@c2? 9ğKj˖ Psw#5.dRݚ I1OK&ZjYzv1ec^61["zC +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(? --- a/index.html +++ b/index.html @@ -24,10 +24,6 @@
- -
@@ -36,7 +32,7 @@ //Code to initialize the framework window.M = window.M || {}; window.onload = function() { - M.load("/maraa/data/maraa2.json"); + M.load('example.json'); }; @@ -45,7 +41,7 @@ - + + + +