<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dzemal Becirevic</title>
	<atom:link href="http://dzemo.se/feed" rel="self" type="application/rss+xml" />
	<link>http://dzemo.se</link>
	<description>utvecklingsblogg</description>
	<lastBuildDate>Tue, 21 Feb 2012 12:44:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>steg 02 &#8211; implementation &#8211; dag 6</title>
		<link>http://dzemo.se/ria/steg-02-implementation-dag-6</link>
		<comments>http://dzemo.se/ria/steg-02-implementation-dag-6#comments</comments>
		<pubDate>Tue, 21 Feb 2012 11:26:25 +0000</pubDate>
		<dc:creator>Dzemal</dc:creator>
				<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://dzemo.se/?p=232</guid>
		<description><![CDATA[Nu har jag gjort en ny commit till giten. Jag har hittat en lösning för hur jag ska filtrera varje kategoriers task och det var inte alls så svårt, dock vet jag inte om det är det bästa sättet att &#8230; <a href="http://dzemo.se/ria/steg-02-implementation-dag-6">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nu har jag gjort en ny commit till giten. Jag har hittat en lösning för hur jag ska filtrera varje kategoriers task och det var inte alls så svårt, dock vet jag inte om det är det bästa sättet att göra på. Detta har jag åstadkommit genom att använda _.filter() &#8211; funktion på detta vis:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> school <span style="color: #339933;">=</span> _.<span style="color: #660066;">filter</span><span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">taskCollection</span>.<span style="color: #660066;">models</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span> task <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span> task.<span style="color: #660066;">attributes</span>.<span style="color: #660066;">category</span>.<span style="color: #660066;">attributes</span>.<span style="color: #660066;">label</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">'School'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">return</span> task.<span style="color: #660066;">attributes</span>.<span style="color: #660066;">category</span>.<span style="color: #660066;">attributes</span>.<span style="color: #660066;">label</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Jag är nästan säker på att det är rätt lösning för att filtrera ut ur en collection, men frågan är om jag gör rätt när jag ska rendera ut dessa i en annan vy. Jag har gjort som så att jag har en template som skriver ut en hållare för varje kategori (Se längre ned, kodsnutt) , i sin tur så är det en annan vy som renderar ut innehållet eftersom jag först måste ha ett element att lagra innehållet i. Templaten renderar en div-tagg med en <em>todo-holder</em> klass och lägger på en klass med respektive kategori label.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;!--</span> TodoList template <span style="color: #339933;">--&gt;</span>
<span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/template&quot;</span> id<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;todo-list-template&quot;</span><span style="color: #339933;">&gt;</span>
    <span style="color: #339933;">&lt;%</span> _.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span> categories<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span> categories <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #339933;">%&gt;</span>
        <span style="color: #339933;">&lt;</span>div <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;todo-holder &lt;%= categories.attributes.label %&gt;&quot;</span><span style="color: #339933;">&gt;</span>
        <span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
    <span style="color: #339933;">&lt;%</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #339933;">%&gt;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></td></tr></table></div>

<p>I sin tur så är det <em>&#8221;views/main/todo.js&#8221;</em> som renderar ut själva innehållet från varje filtrerad task (kategori). Saken jag är osäker på är om jag gör rätt, för att jag i todoholder-vyn instansierar todoView och anropar den flera gånger (se kodsnutt) för att rendera varje kategoris uppgifter. Till TodoView så skickar jag med en class (samma klass som föregående template skapar) som används för att hålla reda på vilket element uppgifterna ska skrivas ut i. Nästa argument är <em>Task</em> som innehåller de filtrerade uppgifterna efter kategori.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> todoView <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> TodoView<span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">&quot;.School&quot;</span><span style="color: #339933;">,</span> school <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
todoView.<span style="color: #660066;">render</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
todoView <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> TodoView<span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">&quot;.Work&quot;</span><span style="color: #339933;">,</span> work <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
todoView.<span style="color: #660066;">render</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
todoView <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> TodoView<span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">&quot;.Private&quot;</span><span style="color: #339933;">,</span> privateTodo <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
todoView.<span style="color: #660066;">render</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Ful kod? Dont know. Det får vara så här fram till att jag hittar en enklare/bättre lösning.</p>
]]></content:encoded>
			<wfw:commentRss>http://dzemo.se/ria/steg-02-implementation-dag-6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>steg 02 &#8211; implementation &#8211; dag 5</title>
		<link>http://dzemo.se/ria/steg-02-implementation-dag-5</link>
		<comments>http://dzemo.se/ria/steg-02-implementation-dag-5#comments</comments>
		<pubDate>Fri, 17 Feb 2012 19:20:20 +0000</pubDate>
		<dc:creator>Dzemal</dc:creator>
				<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://dzemo.se/?p=228</guid>
		<description><![CDATA[Idag har det varit, nästan en hel dag med Todo applikationen. Fått en hel del gjort, och felsökt ännu mer nästan. Det har dykt upp lite kluriga saker, hade &#8221;stora&#8221; problem med att få relation att fungera mellan TaskModel, UserModel &#8230; <a href="http://dzemo.se/ria/steg-02-implementation-dag-5">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Idag har det varit, nästan en hel dag med Todo applikationen. Fått en hel del gjort, och felsökt ännu mer nästan. Det har dykt upp lite kluriga saker, hade &#8221;stora&#8221; problem med att få relation att fungera mellan TaskModel, UserModel och CategoryModel men efter några timmars felsökande så lokaliserades problemet. (Som jag tyvärr nu glömt bort.. För mycket kodande och felsökning idag).</p>
<p>Det går nu i alla fall att skapa en Task, med tillhörande egenskaper/attribut. Modellerna har förändrats lite då jag istället för att ha egna ID på objekten så låter jag Backbone ta hand om detta, det känns mycket smidigare och tror även att det blir enklare i längden.</p>
<p>Upplevde även en del problem med TaskCollection, av någon anledning så kan jag inte använda collection.add( model ) för att lägga till en Task til Collectionen, utan var återigen tvungen att gå tillbaka till Create (som i princip är samma sak) skillnaden är väl att man inte riktigt kan fånga valideringsfel på samma sätt men jag tror att även detta är löst.<br />
Har även fått arbeta en liten liten del med events och hur de triggas och fungerar, känns ganska basic måste jag säga.</p>
<p>Imorgon väntar nya äventry, lets roll.</p>
]]></content:encoded>
			<wfw:commentRss>http://dzemo.se/ria/steg-02-implementation-dag-5/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>steg 02 &#8211; implementation &#8211; dag 4</title>
		<link>http://dzemo.se/ria/steg-02-implementation-dag-4</link>
		<comments>http://dzemo.se/ria/steg-02-implementation-dag-4#comments</comments>
		<pubDate>Thu, 16 Feb 2012 11:40:57 +0000</pubDate>
		<dc:creator>Dzemal</dc:creator>
				<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://dzemo.se/?p=222</guid>
		<description><![CDATA[Idag har jag haft ett trevligt samtal med David kring lite placering av instansitiering av moduler och var de bör ligga. Vi kom fram till att det bästa sättet, för min applikation, är att låta routern instansiera de moduler (främst &#8230; <a href="http://dzemo.se/ria/steg-02-implementation-dag-4">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Idag har jag haft ett trevligt samtal med David kring lite placering av instansitiering av moduler och var de bör ligga. Vi kom fram till att det bästa sättet, för min applikation, är att låta routern instansiera de moduler (främst collections) som kommer att användas ute i vyerna för att sedan kunna skicka med dessa till vyerna där de ska användas. Detta ska underlätta så att vyerna och övriga delar av applikationen jobbar mot samma instans av collections-objektena vilket är väldigt bra.</p>
<p>En sak som är värd att nämna, placera aldrig Backbone.history.start() innuti din router, då kan lite allt möjligt hända i applikationen som man inte förstår sig på. Backbone.history.start() ska komma efter att huvud routern har initiserats och inget annat.</p>
<p>Just nu så har jag lite klurigheter med att få relational att fungera, inte riktigt så påläst inom det så måste läsa på lite mer kring hur man skapar ett nytt objekt som har en relation till ett annat, för tydligen fungerar inte nedanstående kodstycke:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">taskCollection</span>.<span style="color: #660066;">create</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> 
	taskId <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">taskCollection</span>.<span style="color: #660066;">lenth</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">1</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	content <span style="color: #339933;">:</span> taskContent<span style="color: #339933;">,</span>
	time <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	completed <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
	userId <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">userCollection</span>.<span style="color: #660066;">at</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attributes</span>.<span style="color: #660066;">userId</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// Relation mot User.</span>
	categoryId <span style="color: #339933;">:</span> taskCategory <span style="color: #006600; font-style: italic;">// Relation mot Category.</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Vilket gör att jag får följande varning i consolen:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">Relation<span style="color: #339933;">=</span>child<span style="color: #339933;">;</span> no instance<span style="color: #339933;">,</span> key or relatedModel <span style="color: #009900;">&#40;</span> child<span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;userId&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span></pre></td></tr></table></div>

<p><em>fortsättning följer&#8230;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://dzemo.se/ria/steg-02-implementation-dag-4/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>steg 02: implementation &#8211; dag 3</title>
		<link>http://dzemo.se/ria/steg-02-implementation-dag-3</link>
		<comments>http://dzemo.se/ria/steg-02-implementation-dag-3#comments</comments>
		<pubDate>Tue, 14 Feb 2012 19:26:47 +0000</pubDate>
		<dc:creator>Dzemal</dc:creator>
				<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://dzemo.se/?p=215</guid>
		<description><![CDATA[Nu är jag tillbaka efter några dagars frånvaro från datorn generellt. Idag har jag tänkt mig läsa på ordentligt i hur man använder backbone.localStorage adaptern istället för en databas. Det som framfår i informationen som jag har tagit del utav &#8230; <a href="http://dzemo.se/ria/steg-02-implementation-dag-3">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nu är jag tillbaka efter några dagars frånvaro från datorn generellt. Idag har jag tänkt mig läsa på ordentligt i hur man använder backbone.localStorage adaptern istället för en databas.</p>
<p>Det som framfår i informationen som jag har tagit del utav är att man anger i en collection/model att den ska använda sig utav en viss &#8221;store&#8221; (Läs på mer kring <a href="http://en.wikipedia.org/wiki/Web_storage">Web storage/localStorage</a> här.)<br />
Exempelvis så här:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">todoList <span style="color: #339933;">=</span> Backbone.<span style="color: #660066;">Collection</span>.<span style="color: #660066;">extend</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
    model <span style="color: #339933;">:</span> Todo<span style="color: #339933;">,</span>
    localStorage <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">new</span> Store<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Todos&quot;</span><span style="color: #009900;">&#41;</span>
    ...
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Jag försöker få det hela att fungera, men vet inte riktigt vart och hur jag ska ladda modellerna/collections för att det ska vara rätt. Måste ta och fråga David kring det här, för jag börjar bli lite osäker. Teoretiskt så borde jag inte skicka med något till andra moduler utan ange den första modulen som ett beroende till den andra modulen, då tror jag att jag är på rätt väg.</p>
<p>Sättet man sparar ner modellen till lagringen(localStorage) är helt enkelt genom att anropa model.save() och så körs Backbone.sync() som sparar ner informationen till databasen/lagringen. Det smidiga med olika lösningar för lagring när det gäller Backbone är att man enkelt kan läsa in en adapter t.ex. localStorage och inte behöva ändra någonting i sin kod förutom att ange localStorage i modellen/collectionen att man ska använda localStorage, resten sköter sig själv genom att localStrorage skriver över Backbone.sync() vilket är riktigt smidigt.</p>
<p>&#8211; Update 19.54:<br />
Nu har jag lekt lite med localStorage och ser att det fungerar väldigt smidigt. Jag har lärt mig hur jag ska göra för att utföra CRUD mot Collectionen. Kontrollerar även i collectionen om de tre standard kategorierna finns ( Work, School och Private), finns inte dessa så skapas dom när collectionen instansierar.</p>
<p>Nästa steg är att kunna få ut alla skapade kategorier i dropdown listan så att de kan väljas, men det är på templating/underscore delen så det fortsätter jag med imorgon.</p>
<h3>Sammanfattning</h3>
<p>För en kort sammanfattning så har jag idag lärt mig hur jag kan använda localStorage och collections/modeller för att spara data till klientens lagring. Att implementera detta är väldigt smidigt och väl dokumenterat (om man läser all dokumentation, <em>note to self</em>) och ett väldigt smidigt sätt att t.ex erbjuda användaren offline-funktionalitet av appen som sedan, när användaren är online, syncas mot en server för lagring. Så, +1 för localStorage och hur väl bra och enkelt det är gjort som en adapter för backbone.</p>
]]></content:encoded>
			<wfw:commentRss>http://dzemo.se/ria/steg-02-implementation-dag-3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>steg 01: implementation &#8211; dag 2</title>
		<link>http://dzemo.se/ria/steg-01-implementation-dag-2</link>
		<comments>http://dzemo.se/ria/steg-01-implementation-dag-2#comments</comments>
		<pubDate>Fri, 10 Feb 2012 09:03:14 +0000</pubDate>
		<dc:creator>Dzemal</dc:creator>
				<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://dzemo.se/?p=211</guid>
		<description><![CDATA[Nu på morgonen har jag haft samtal med David angående grunden i min applikation. Vi pratade bland annat om ämnen som Requrie.js och hur det fungerar, vi tog upp Events i Backbone men även lite best practice kring vart collections &#8230; <a href="http://dzemo.se/ria/steg-01-implementation-dag-2">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nu på morgonen har jag haft samtal med David angående grunden i min applikation. Vi pratade bland annat om ämnen som Requrie.js och hur det fungerar, vi tog upp Events i Backbone men även lite best practice kring vart collections ska laddas in och så vidare.</p>
<p>Under dagen har jag tänkt att försöka sätta mig in i hur jag ska gå tillväga för att använda mig utav localStorage (Backbone.localStorage) och testa det. När jag har förstått detta så tänkte jag mig börja skapa första vyn för applikationen, där det först ska kontrolleras om det finns någon användare för applikationen. Finns det ingen användare så ska ett formulär presenteras där användaren får skapa sig en användare. (Applikationen ska vara begränsad på så sätt att en installation bara kan ha en användare).</p>
]]></content:encoded>
			<wfw:commentRss>http://dzemo.se/ria/steg-01-implementation-dag-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>steg 02: implementering &#8211; intro</title>
		<link>http://dzemo.se/ria/steg-02-implementering-intro</link>
		<comments>http://dzemo.se/ria/steg-02-implementering-intro#comments</comments>
		<pubDate>Thu, 09 Feb 2012 11:51:10 +0000</pubDate>
		<dc:creator>Dzemal</dc:creator>
				<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://dzemo.se/?p=201</guid>
		<description><![CDATA[Yes, nu var det äntligen dags för implementeringssteget i kursen. Jag har under morgonen bara börjat med att placera några av de filerna där jag vill ha dem, skapat modulerna och läst på lite mer kring Require.js, som börjar klarna &#8230; <a href="http://dzemo.se/ria/steg-02-implementering-intro">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yes, nu var det äntligen dags för implementeringssteget i kursen.</p>
<p>Jag har under morgonen bara börjat med att placera några av de filerna där jag vill ha dem, skapat modulerna och läst på lite mer kring Require.js, som börjar klarna lite mer för mig nu. De filerna som har skapats har nu pushats upp till <a href="https://github.com/DzemalBecirevic/Ria">git</a> och kan ses där.</p>
<p>Jag har nu kommit igång med mitt projekt, och fortsätter med att koda upp de första filerna (main.js, app.js och router.js) men jag upplever problem med require.js när jag ska definera inladdningsordning med hjälp av &#8221;order!<filsökväg>&#8221; eftersom jag får ett javascript fel som säger att den inte hittar order.js. Visst, den hittar inte filen, men jag har ju inte anget någonstans att den ska använda någon order.js fil? Eller måste man implementera en sådan om man vill använda &#8221;order!&#8221; i sökvägen? Fundersam här. <strong>Edit:</strong> Japp, order.js är tydligen ett plugin som man ska ladda ned, men det framgår tyvärr inte på den platsen där jag läste om Require.js.</p>
<p><strong>Update: 17.57</strong><br />
Nu har jag gjort ingången för applikationen, även läst på en del om hur man använder sig utav underscores templating egenskaper för att skapa olika templates. Jag har dock ännu inte testat modellerna utan jag har endast arbetat med att få ut olika vyer och grundläggande css. Har även skapat en template som innehåller ett formulär för att skapa en ny Task.</p>
<p>create-task-template<br />
Templates i Underscore skrivs inom en script-tagg i head. Man sätter bara type till text/template och även ett ID för att enklare tageta templaten.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/template&quot;</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;create-task-template&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>Create Task<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span> <span style="color: #000066;">action</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#&quot;</span> <span style="color: #000066;">method</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;POST&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">label</span> <span style="color: #000066;">for</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;task-content&quot;</span>&gt;</span>Task:<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">label</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;task-content&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;submit&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;task-submit&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Add task&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">form</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></pre></td></tr></table></div>

<p>De som har tagit fram kommer nu att commitas till Github repositoriet. (Länk i sidebar).</p>
]]></content:encoded>
			<wfw:commentRss>http://dzemo.se/ria/steg-02-implementering-intro/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>steg 01 : kodorganisering</title>
		<link>http://dzemo.se/ria/steg-01-kodorganisering</link>
		<comments>http://dzemo.se/ria/steg-01-kodorganisering#comments</comments>
		<pubDate>Tue, 07 Feb 2012 12:15:23 +0000</pubDate>
		<dc:creator>Dzemal</dc:creator>
				<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://dzemo.se/?p=187</guid>
		<description><![CDATA[Då var vi på det sista steget innan det är dags att implementera Todo applikationen. Innehåll Filstruktur Moduler (AMD) Laddning av moduler (Require.js) Filstruktur Då var det dags att bestämma hur filstrukturen i applikationen är tänkt att se ut. Egentligen &#8230; <a href="http://dzemo.se/ria/steg-01-kodorganisering">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Då var vi på det sista steget innan det är dags att implementera Todo applikationen.</p>
<h3>Innehåll</h3>
<ol>
<li><a href="#filstruktur">Filstruktur</li>
<li><a href="#moduler">Moduler (AMD)</li>
<li><a href="#requirejs">Laddning av moduler (Require.js)</li>
</ol>
<h3><a name="filstruktur">Filstruktur</a></h3>
<p>Då var det dags att bestämma hur filstrukturen i applikationen är tänkt att se ut. Egentligen så tycker jag inte att man behöver fundera speciellt mycket kring det här, huvudsaken tycker jag är att man bara delar upp de olika delarna av applikationen till passande mappar och filer. Figur 1 visar en liten illustration av hur jag har valt att dela upp min filstruktur.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">Todo
<span style="color: #339933;">|</span>     docs
<span style="color: #339933;">|</span>     <span style="color: #339933;">|</span>
<span style="color: #339933;">|</span>     <span style="color: #339933;">|</span> <span style="color: #006600; font-style: italic;">// Documentation</span>
<span style="color: #339933;">|</span>
<span style="color: #339933;">|</span>     js
<span style="color: #339933;">|</span>     <span style="color: #339933;">|</span>
<span style="color: #339933;">|</span>     <span style="color: #339933;">|--</span> collections
<span style="color: #339933;">|</span>     <span style="color: #339933;">|</span>   <span style="color: #339933;">|</span> <span style="color: #006600; font-style: italic;">// collection modules.</span>
<span style="color: #339933;">|</span>     <span style="color: #339933;">|</span>
<span style="color: #339933;">|</span>     <span style="color: #339933;">|--</span> lib
<span style="color: #339933;">|</span>     <span style="color: #339933;">|</span>   <span style="color: #339933;">|</span> <span style="color: #006600; font-style: italic;">// javascript libs</span>
<span style="color: #339933;">|</span>     <span style="color: #339933;">|</span>
<span style="color: #339933;">|</span>     <span style="color: #339933;">|--</span> models
<span style="color: #339933;">|</span>     <span style="color: #339933;">|</span>   <span style="color: #339933;">|</span> <span style="color: #006600; font-style: italic;">// model modules</span>
<span style="color: #339933;">|</span>     <span style="color: #339933;">|</span>
<span style="color: #339933;">|</span>     <span style="color: #339933;">|--</span> views
<span style="color: #339933;">|</span>     <span style="color: #339933;">|</span>   <span style="color: #339933;">|</span> <span style="color: #006600; font-style: italic;">// views</span>
<span style="color: #339933;">|</span>     <span style="color: #339933;">|</span>
<span style="color: #339933;">|</span>     <span style="color: #339933;">|</span><span style="color: #006600; font-style: italic;">// app.js // main router</span>
<span style="color: #339933;">|</span>
<span style="color: #339933;">|--</span> index.<span style="color: #660066;">html</span></pre></div></div>

<h3><a name="moduler">Moduler</a></h3>
<p>Jag har under morgonen nu suttit och läst igenom <a href="http://addyosmani.com/writing-modular-js/">Writing modular javascript</a> av Addy Osmani och försökt förstå hur man bäst kan uppnå loose coupling mellan de javascript moduler jag kommer att använda.</p>
<p>Vad jag kan läsa mig till, och förstå, så är AMD ett rekommenderat mönster för att skapa moduler där man kan definera beroenden (dependencies) och tillsammans med en script loader (t.ex. <a href="http://requirejs.org/">RequireJS</a> eller <a href="https://github.com/unscriptable/curl">curl.js</a>) kan erbjuda dynamisk laddning av resurser (läs scripts). <a href="#requirejs">Läs mer min tänkta implementation av require.js</a>.</p>
<p>Mönstret verkar ganska straight forward faktiskt, man använder define() för att definera en modul, innuti define så skapara du bara ett singelton objekt med alla dina funktioner som den här modulen ska ha och längst ner returnerar du singelton objektet.</p>
<h3>Exempel på en modul</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">define<span style="color: #009900;">&#40;</span>
    <span style="color: #003366; font-weight: bold;">var</span> myModule <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
        doStuff <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #006600; font-style: italic;">// Do something here.</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">return</span> myModule<span style="color: #339933;">;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>As clean and easy as that. Exemplet ovan är ett väldigt enkelt exempel som bara definerar en modul, men man kan även ange beroenden som Addi går igenom i sin artikel.</p>
<h3>Exempel på en modul i Backbone</h3>
<p>Här har jag försökt, efter att ha läst Addis artikel, försökt ge mig på att definera en modul enligt AMD som använder Backbone. Modulen är en model baserad på Task objektet som finns beskrivet <a href="http://dzemo.se/ria/steg-01-objekt-och-data#backbone">här</a>.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">define<span style="color: #009900;">&#40;</span> 
  <span style="color: #003366; font-weight: bold;">var</span> TaskModel <span style="color: #339933;">=</span> Backbone.<span style="color: #660066;">RelationalModel</span>.<span style="color: #003366; font-weight: bold;">extends</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Define the relations of the object using relational.</span>
    relations <span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
      <span style="color: #009900;">&#123;</span>
        type <span style="color: #339933;">:</span> Backbone.<span style="color: #660066;">HasOne</span><span style="color: #339933;">,</span>
        key <span style="color: #339933;">:</span> <span style="color: #3366CC;">'userId'</span><span style="color: #339933;">,</span>
        relatedModel <span style="color: #339933;">:</span> <span style="color: #3366CC;">'User'</span><span style="color: #339933;">,</span>
        includeInJSON <span style="color: #339933;">:</span> Backbone.<span style="color: #660066;">Model</span>.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">idAttribute</span><span style="color: #339933;">,</span>
        collectionType <span style="color: #339933;">:</span> <span style="color: #3366CC;">'UserCollection'</span>
      <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
      <span style="color: #009900;">&#123;</span>
        type <span style="color: #339933;">:</span> Backbone.<span style="color: #660066;">HasOne</span><span style="color: #339933;">,</span>
        key <span style="color: #339933;">:</span> <span style="color: #3366CC;">'categoryId'</span><span style="color: #339933;">,</span>
        relatedModel <span style="color: #339933;">:</span> <span style="color: #3366CC;">'Category'</span><span style="color: #339933;">,</span>
        includeInJSON <span style="color: #339933;">:</span> Backbone.<span style="color: #660066;">Model</span>.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">idAttribute</span><span style="color: #339933;">,</span>
        collectionType <span style="color: #339933;">:</span> <span style="color: #3366CC;">'CategoryCollection'</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
&nbsp;
    defaults <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
      taskId <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
      content <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
      time <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
      completed <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
      userId <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
      categoryId <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span>  
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
    initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #006600; font-style: italic;">// Empty function for future need.</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">/**
      * @param {Array} attrs The attributes to validate.
      * @returns {String} If something does not validate, return string
      * (throw error in backbone.) does not run set or save on model.
      */</span>
    validate <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span> attrs <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>  attrs.<span style="color: #660066;">taskId</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #339933;">||</span> attrs.<span style="color: #660066;">content</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #339933;">||</span> 
            attrs.<span style="color: #660066;">time</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #339933;">||</span> attrs.<span style="color: #660066;">completed</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #339933;">||</span> 
            attrs.<span style="color: #660066;">userId</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #339933;">||</span> attrs.<span style="color: #660066;">categoryId</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
             <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #3366CC;">&quot;The task object does not validate.&quot;</span><span style="color: #339933;">;</span> 
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">return</span> TaskModel<span style="color: #339933;">;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h3><a name="#requirejs">Laddning av moduler (Require.js)</a></h3>
<p>Jag förstår nu hur jag ska använda mig utav <a href="http://requirejs.org/">Require.js</a> för att ladda in filerna vid behov vid körning av applikationen.</p>
<p>För att använda Require.js för att ladda in applikationen efter att Require.js är laddat, så använder man ett speciellt attribut på script-taggen som ser ut så här:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script data<span style="color: #339933;">-</span>main<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;scripts/main&quot;</span> src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;scripts/require.js&quot;</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></td></tr></table></div>

<p>data-main attributet säger åt Require.js ska ladda filen main.js som finns i scripts katalogen i applikations katalogen efter att Require.js har laddats färdigt.</p>
<p>Sen är det bara att fortsätta och deklarera behov i resten av applikationen genom att använda sig utav <a href="http://requirejs.org/docs/api.html">Require.js API</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dzemo.se/ria/steg-01-kodorganisering/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>steg 01 : moduler och funktioner</title>
		<link>http://dzemo.se/ria/steg-01-moduler-och-funktioner</link>
		<comments>http://dzemo.se/ria/steg-01-moduler-och-funktioner#comments</comments>
		<pubDate>Thu, 02 Feb 2012 17:21:18 +0000</pubDate>
		<dc:creator>Dzemal</dc:creator>
				<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://dzemo.se/?p=161</guid>
		<description><![CDATA[Nu är dags att ta fram de moduler/funktioner som min applikation kommer att använda sig utav. Som David säger på kurswebben så kan dessa komma att förändras under implementerings steget så dessa kod-definitioner får man se som &#8221;generella&#8221; och kan &#8230; <a href="http://dzemo.se/ria/steg-01-moduler-och-funktioner">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nu är dags att ta fram de moduler/funktioner som min applikation kommer att använda sig utav. Som David säger på kurswebben så kan dessa komma att förändras under implementerings steget så dessa kod-definitioner får man se som &#8221;generella&#8221; och kan komma att förändras. De jag har valt att skriva kod-definitioner för är Collection, View och Router.</p>
<p>Jag har valt att skriva alla dessa moduler i Backbone, och har endast identifierat de funktioner/metoder jag måste ha för respektive modul därför ser t.ex. alla vyer och collections likadana ut.</p>
<h3>Collection</h3>
<p>(Endast valt att definera vilken model respektive collection kommer använda).</p>
<p><strong>TaskCollection</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">TaskCollection <span style="color: #339933;">=</span> Backbone.<span style="color: #660066;">Collection</span>.<span style="color: #003366; font-weight: bold;">extends</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  model <span style="color: #339933;">:</span> Task<span style="color: #339933;">,</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><strong>UserCollection</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">UserCollection <span style="color: #339933;">=</span> Backbone.<span style="color: #660066;">Collection</span>.<span style="color: #003366; font-weight: bold;">extends</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  model <span style="color: #339933;">:</span> User<span style="color: #339933;">,</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><strong>CategoryCollection</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">CategoryCollection <span style="color: #339933;">=</span> Backbone.<span style="color: #660066;">Collection</span>.<span style="color: #003366; font-weight: bold;">extends</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  model <span style="color: #339933;">:</span> Category<span style="color: #339933;">,</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><strong>TodoEventCollection</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">TodoEventCollection <span style="color: #339933;">=</span> Backbone.<span style="color: #660066;">Collection</span>.<span style="color: #003366; font-weight: bold;">extends</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  model <span style="color: #339933;">:</span> TodoEvent<span style="color: #339933;">,</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h3>View</h3>
<p><strong>CreateUserView</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">CreateUserView <span style="color: #339933;">=</span> Backbone.<span style="color: #660066;">View</span>.<span style="color: #003366; font-weight: bold;">extends</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  el <span style="color: #339933;">:</span> <span style="color: #3366CC;">''</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// The corresponding DOM element for the view.</span>
&nbsp;
  initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// On instanciating render.</span>
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">render</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  events <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Bind events to the view.  </span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  <span style="color: #006600; font-style: italic;">/**
    * Renders the view.
    * @returns Returns this instance of the view.
    */</span>
  render <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Do some stuff before rendering view.</span>
    <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><strong>CreateTaskView</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">CreateTaskView <span style="color: #339933;">=</span> Backbone.<span style="color: #660066;">View</span>.<span style="color: #003366; font-weight: bold;">extends</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  el <span style="color: #339933;">:</span> <span style="color: #3366CC;">''</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// The corresponding DOM element for the view.</span>
&nbsp;
  initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// On instanciating render.</span>
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">render</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  events <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Bind events to the view.  </span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  render <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Do some stuff before rendering view.</span>
    <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><strong>CreateCategoryView</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">CreateCategoryView <span style="color: #339933;">=</span> Backbone.<span style="color: #660066;">View</span>.<span style="color: #003366; font-weight: bold;">extends</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  el <span style="color: #339933;">:</span> <span style="color: #3366CC;">''</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// The corresponding DOM element for the view.</span>
&nbsp;
  initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// On instanciating render.</span>
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">render</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  events <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Bind events to the view.  </span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  <span style="color: #006600; font-style: italic;">/**
    * Renders the view.
    * @returns   CreateUser Returns this instance of the view.
    */</span>
  render <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Do some stuff before rendering view.</span>
    <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><strong>CategoryView</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">CategoryView <span style="color: #339933;">=</span> Backbone.<span style="color: #660066;">View</span>.<span style="color: #003366; font-weight: bold;">extends</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  el <span style="color: #339933;">:</span> <span style="color: #3366CC;">''</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// The corresponding DOM element for the view.</span>
&nbsp;
  initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// On instanciating render.</span>
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">render</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  events <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Bind events to the view.  </span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  <span style="color: #006600; font-style: italic;">/**
    * Renders the view.
    * @returns   CreateUser Returns this instance of the view.
    */</span>
  render <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Do some stuff before rendering view.</span>
    <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><strong>SingleCategoryView</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">SingleCategoryView <span style="color: #339933;">=</span> Backbone.<span style="color: #660066;">View</span>.<span style="color: #003366; font-weight: bold;">extends</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  el <span style="color: #339933;">:</span> <span style="color: #3366CC;">''</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// The corresponding DOM element for the view.</span>
&nbsp;
  initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// On instanciating render.</span>
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">render</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  events <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Bind events to the view.  </span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  <span style="color: #006600; font-style: italic;">/**
    * Renders the view.
    * @returns   CreateUser Returns this instance of the view.
    */</span>
  render <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Do some stuff before rendering view.</span>
    <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><strong>EditTaskView</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">EditTaskView <span style="color: #339933;">=</span> Backbone.<span style="color: #660066;">View</span>.<span style="color: #003366; font-weight: bold;">extends</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  el <span style="color: #339933;">:</span> <span style="color: #3366CC;">''</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// The corresponding DOM element for the view.</span>
&nbsp;
  initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// On instanciating render.</span>
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">render</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  events <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Bind events to the view.  </span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  <span style="color: #006600; font-style: italic;">/**
    * Renders the view.
    * @returns   CreateUser Returns this instance of the view.
    */</span>
  render <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Do some stuff before rendering view.</span>
    <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><strong>DeleteTaskView</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">DeleteTaskView <span style="color: #339933;">=</span> Backbone.<span style="color: #660066;">View</span>.<span style="color: #003366; font-weight: bold;">extends</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  el <span style="color: #339933;">:</span> <span style="color: #3366CC;">''</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// The corresponding DOM element for the view.</span>
&nbsp;
  initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// On instanciating render.</span>
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">render</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  events <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Bind events to the view.  </span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  <span style="color: #006600; font-style: italic;">/**
    * Renders the view.
    * @returns   CreateUser Returns this instance of the view.
    */</span>
  render <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Do some stuff before rendering view.</span>
    <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<h3>Router</h3>
<p><strong>App</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">app <span style="color: #339933;">=</span> Backbone.<span style="color: #660066;">Router</span>.<span style="color: #003366; font-weight: bold;">extends</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  routes <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Eventually more routes will be defined.</span>
    <span style="color: #3366CC;">''</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">'main'</span><span style="color: #339933;">,</span>
    <span style="color: #3366CC;">'*actions'</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">'default'</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  <span style="color: #003366; font-weight: bold;">default</span> <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span> actions <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Show an error message if route is not defined.</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  main <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Starts the main application.</span>
    <span style="color: #006600; font-style: italic;">// Instanciate Model, view and collections.</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// Check if localStorage store(s) exists.</span>
      <span style="color: #006600; font-style: italic;">// If not, create the storage.</span>
      <span style="color: #006600; font-style: italic;">// Load createUserView to create a user.</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// Check if user exists.</span>
      <span style="color: #006600; font-style: italic;">// If not, load createuserView to create a user.</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// Execute rest of application .. (Dont know details yet.)</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://dzemo.se/ria/steg-01-moduler-och-funktioner/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bear css &#8211; bygger upp din css mail</title>
		<link>http://dzemo.se/webbutveckling/bear-css-bygger-upp-din-css-mail</link>
		<comments>http://dzemo.se/webbutveckling/bear-css-bygger-upp-din-css-mail#comments</comments>
		<pubDate>Wed, 01 Feb 2012 08:47:11 +0000</pubDate>
		<dc:creator>Dzemal</dc:creator>
				<category><![CDATA[Webbutveckling]]></category>

		<guid isPermaLink="false">http://dzemo.se/?p=143</guid>
		<description><![CDATA[Bear CSS är en väldigt smidig tjänst jag just stötte på som skapar en grundläggande css mall för din webbplats. Det som du behöver göra är att du skapar din html sida med de taggar och element du tänkt använda dig &#8230; <a href="http://dzemo.se/webbutveckling/bear-css-bygger-upp-din-css-mail">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone  wp-image-146" title="bearcss" src="http://dzemo.se/wp-content/uploads/2012/02/bearcss1.png" alt="" width="604" height="370" /></p>
<p><a href="http://www.bearcss.com">Bear CSS</a> är en väldigt smidig tjänst jag just stötte på som skapar en grundläggande css mall för din webbplats. Det som du behöver göra är att du skapar din html sida med de taggar och element du tänkt använda dig utav, med dess attribut satta så som id och klasser. Nästa steg är helt enkelt att bara gå till <a href="http://www.bearcss.com">bearcss.com</a> och ladda upp din htmlfil. Bearcss går igenom filen med en php dom parser och skapar en css mall för dig som du kan ladda ned.</p>
<p>Väldigt smidig tjänst måste jag säga, snabbare ju upp uppstarten av ett projekt ganska mycket genom att man inte behöva skriva &#8221;grund css:en&#8221; själv. Me like!</p>
]]></content:encoded>
			<wfw:commentRss>http://dzemo.se/webbutveckling/bear-css-bygger-upp-din-css-mail/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>steg 01 : objekt och data</title>
		<link>http://dzemo.se/ria/steg-01-objekt-och-data</link>
		<comments>http://dzemo.se/ria/steg-01-objekt-och-data#comments</comments>
		<pubDate>Sat, 28 Jan 2012 09:37:36 +0000</pubDate>
		<dc:creator>Dzemal</dc:creator>
				<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://dzemo.se/?p=101</guid>
		<description><![CDATA[Här kommer information om de ingående objekt som min To-do applikation kommer att använda. Kommer även lägga upp klassdiagram som är skapade med hjälp av http://www.yuml.me, som jag ett flertal gånger tidigare har använt till både klassdiagram och aktivitetsdiagram. Längre &#8230; <a href="http://dzemo.se/ria/steg-01-objekt-och-data">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Här kommer information om de ingående objekt som min To-do applikation kommer att använda. Kommer även lägga upp klassdiagram som är skapade med hjälp av <a href="http://www.yuml.me">http://www.yuml.me</a>, som jag ett flertal gånger tidigare har använt till både klassdiagram och aktivitetsdiagram. Längre ned finns även kod-exempel på hur dessa modeller/objekt ser ut i Backnone. (Notera, dessa är endast &#8221;skal&#8221; och kan komma att förändras lite vid implementerings-steget) <a href="#backbone">Gå direkt dit</a>.</p>
<p><strong>Task</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">Task <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
    taskId <span style="color: #339933;">:</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// Integer.</span>
    content <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Go to school.&quot;</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// String.</span>
    time <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// Date.</span>
    completed <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// Boolean.</span>
    userId <span style="color: #339933;">:</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// Integer.</span>
    categoryId <span style="color: #339933;">:</span> <span style="color: #CC0000;">1</span> <span style="color: #006600; font-style: italic;">// Integer.</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><a href="http://dzemo.se/wp-content/uploads/2012/01/task_classdiagram1.png"><img class="alignleft size-full wp-image-156" title="task_classdiagram" src="http://dzemo.se/wp-content/uploads/2012/01/task_classdiagram1.png" alt="" width="200" height="168" /></a>Task objektet är mer eller mindre huvud objektet i To-do applikationen då det kommer att innehålla själva &#8221;att göra uppgiften&#8221;. Det kommer att innehålla ett taskId för enklare borttagning och editering av uppgiften. Content som självklart innehåller själva uppgiften. Time egenskapen ska innehålla en tidsstämpel t.ex. 2012-01-20 19:38. Completed som är en boolean som kommer att ändras om man har slutfört ( kryssat checkboxen) uppgiften och självklart ett userId  som kopplar en task till en viss användare. Task objektet innehåller även en egenskaper, categoryId, som kopplar tasken till en specifik kategori.</p>
<p><strong>User</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">User <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
    userId <span style="color: #339933;">:</span> <span style="color: #CC0000;">2</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// Integer.</span>
    <span style="color: #000066;">name</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Anders&quot;</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// String.</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><a href="http://dzemo.se/wp-content/uploads/2012/01/user_classdiagram.png"><img class="alignleft size-full wp-image-119" title="user_classdiagram" src="http://dzemo.se/wp-content/uploads/2012/01/user_classdiagram.png" alt="" width="176" height="77" /></a>User är, som namnet säger, ett objekt som har två egenskaper. Den första egenskapen, userId är ett Id för användaren och det andra är name som är namnet på användaren.</p>
<p><strong>Category</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">Category <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
    categoryId <span style="color: #339933;">:</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// Integer.</span>
    label <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Work&quot;</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// String.</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><a href="http://dzemo.se/wp-content/uploads/2012/01/category_classdiagram.png"><img class="alignleft size-full wp-image-120" title="category_classdiagram" src="http://dzemo.se/wp-content/uploads/2012/01/category_classdiagram.png" alt="" width="189" height="77" /></a>Category är ett objekt som även den endast innehåller två egenskaper, ett Id och en label som ska fungera som namnet för kategorin.</p>
<p><strong>TodoEvent</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">TodoEvent <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">name</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Deleted&quot;</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// String.</span>
    time <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// Date.</span>
    userId <span style="color: #339933;">:</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span> <span style="color: #006600; font-style: italic;">// Integer.</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><a href="http://dzemo.se/wp-content/uploads/2012/01/todoEvent_classdiagram.png"><img class="alignleft size-full wp-image-157" title="todoEvent_classdiagram" src="http://dzemo.se/wp-content/uploads/2012/01/todoEvent_classdiagram.png" alt="" width="171" height="101" /></a> Event, är tänkt att användas som ett objekt för händelseloggen där den ska presentera senaste händelser t.ex att användaren Anders tog bort uppgiften &#8221;Go to school&#8221;.</p>
<h3><a name="backbone">Backbone reprsentation av modellerna</a></h3>
<p><strong>Task</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">Task <span style="color: #339933;">=</span> Backbone.<span style="color: #660066;">RelationalModel</span>.<span style="color: #003366; font-weight: bold;">extends</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #006600; font-style: italic;">// Define the relations of the object using relational.</span>
  relations <span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
    <span style="color: #009900;">&#123;</span>
      type <span style="color: #339933;">:</span> Backbone.<span style="color: #660066;">HasOne</span><span style="color: #339933;">,</span>
      key <span style="color: #339933;">:</span> <span style="color: #3366CC;">'userId'</span><span style="color: #339933;">,</span>
      relatedModel <span style="color: #339933;">:</span> <span style="color: #3366CC;">'User'</span><span style="color: #339933;">,</span>
      includeInJSON <span style="color: #339933;">:</span> Backbone.<span style="color: #660066;">Model</span>.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">idAttribute</span><span style="color: #339933;">,</span>
      collectionType <span style="color: #339933;">:</span> <span style="color: #3366CC;">'UserCollection'</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #009900;">&#123;</span>
      type <span style="color: #339933;">:</span> Backbone.<span style="color: #660066;">HasOne</span><span style="color: #339933;">,</span>
      key <span style="color: #339933;">:</span> <span style="color: #3366CC;">'categoryId'</span><span style="color: #339933;">,</span>
      relatedModel <span style="color: #339933;">:</span> <span style="color: #3366CC;">'Category'</span><span style="color: #339933;">,</span>
      includeInJSON <span style="color: #339933;">:</span> Backbone.<span style="color: #660066;">Model</span>.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">idAttribute</span><span style="color: #339933;">,</span>
      collectionType <span style="color: #339933;">:</span> <span style="color: #3366CC;">'CategoryCollection'</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
&nbsp;
  defaults <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
    taskId <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
    content <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
    time <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
    completed <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
    userId <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
    categoryId <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span>  
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Empty function for future need.</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  <span style="color: #006600; font-style: italic;">/**
    * @param {Array} attrs The attributes to validate.
    * @returns {String} If something does not validate, return string
    * (throw error in backbone.) does not run set or save on model.
    */</span>
  validate <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span> attrs <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>  attrs.<span style="color: #660066;">taskId</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #339933;">||</span> attrs.<span style="color: #660066;">content</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #339933;">||</span> 
          attrs.<span style="color: #660066;">time</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #339933;">||</span> attrs.<span style="color: #660066;">completed</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #339933;">||</span> 
          attrs.<span style="color: #660066;">userId</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #339933;">||</span> attrs.<span style="color: #660066;">categoryId</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #3366CC;">&quot;The task object does not validate.&quot;</span><span style="color: #339933;">;</span> 
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><strong>Category</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">Category <span style="color: #339933;">=</span> Backbone.<span style="color: #660066;">Model</span>.<span style="color: #003366; font-weight: bold;">extends</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  defaults <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
    categoryId <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
    label <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Empty function for future need.</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  <span style="color: #006600; font-style: italic;">/**
    * @param {Array} attrs The attributes to validate.
    * @returns {String} If something does not validate, return string
    * (throw error in backbone.) does not run set or save on model.
    */</span>
  validate <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span> attrs <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>  attrs.<span style="color: #660066;">categoryId</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #339933;">||</span> attrs.<span style="color: #660066;">label</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #3366CC;">&quot;The category object does not validate.&quot;</span><span style="color: #339933;">;</span> 
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><strong>User</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">User <span style="color: #339933;">=</span> Backbone.<span style="color: #660066;">Model</span>.<span style="color: #003366; font-weight: bold;">extends</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  defaults <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
    userId <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
    <span style="color: #000066;">name</span> <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Empty function for future need.</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  <span style="color: #006600; font-style: italic;">/**
    * @param {Array} attrs The attributes to validate.
    * @returns {String} If something does not validate, return string
    * (throw error in backbone.) does not run set or save on model.
    */</span>
  validate <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span> attrs <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>  attrs.<span style="color: #660066;">userId</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #339933;">||</span> attrs.<span style="color: #000066;">name</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #3366CC;">&quot;The User object does not validate.&quot;</span><span style="color: #339933;">;</span> 
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><strong>TodoEvent</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">TodoEvent <span style="color: #339933;">=</span> Backbone.<span style="color: #660066;">Model</span>.<span style="color: #003366; font-weight: bold;">extends</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #006600; font-style: italic;">// Define the relations of the object using relational.</span>
  relations <span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span>
    <span style="color: #009900;">&#123;</span>
      type <span style="color: #339933;">:</span> Backbone.<span style="color: #660066;">HasOne</span><span style="color: #339933;">,</span>
      key <span style="color: #339933;">:</span> <span style="color: #3366CC;">'userId'</span><span style="color: #339933;">,</span>
      relatedModel <span style="color: #339933;">:</span> <span style="color: #3366CC;">'User'</span><span style="color: #339933;">,</span>
      includeInJSON <span style="color: #339933;">:</span> Backbone.<span style="color: #660066;">Model</span>.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">idAttribute</span><span style="color: #339933;">,</span>
      collectionType <span style="color: #339933;">:</span> <span style="color: #3366CC;">'UserCollection'</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
&nbsp;
  defaults <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">name</span> <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
    time <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
    userId <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// Empty function for future need.</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
  <span style="color: #006600; font-style: italic;">/**
    * @param {Array} attrs The attributes to validate.
    * @returns {String} If something does not validate, return string
    * (throw error in backbone.) does not run set or save on model.
    */</span>
  validate <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span> attrs <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>  attrs.<span style="color: #000066;">name</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #339933;">||</span> attrs.<span style="color: #660066;">time</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #339933;">||</span> 
          attrs.<span style="color: #660066;">userId</span> <span style="color: #339933;">===</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #3366CC;">&quot;The ToDoEvent object does not validate.&quot;</span><span style="color: #339933;">;</span> 
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Återigen, notera gärna att dessa modeller är framtagna för att jag ska ha en god förståelse över hur mina modeller/objekt kommer att se ut. Jag har även försökt att definera relationerna genom &#8221;relations:&#8221; attributet i varje model. Som ni säkert ser så extendar modellerna med relationer from RelationlModel istället för från Model, detta är ett krav för att relationerna ska fungera i Backbone. Eftersom jag använder localStorage så kan modellerna komma att förändras, men eftersom backbone-localStorage.js skriver över Backbone.sync() så borde inte mycket alls förändras. Mer om förändringarna kommer att kommenteras i det här inlägget, men även i framtida inlägg som relaterar till ämnet/problemet/lösningen.</p>
]]></content:encoded>
			<wfw:commentRss>http://dzemo.se/ria/steg-01-objekt-och-data/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

