<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>jaydata Wiki Rss Feed</title><link>https://jaydata.codeplex.com/</link><description>jaydata Wiki Rss Description</description><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=73</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
WebAPI,&amp;nbsp; OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook
&lt;/strong&gt;or &lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;KendoUI,&amp;nbsp;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;New: use JayData as a server&lt;/h2&gt;
&lt;p&gt;Use your JayData skills to create data centric business apps that run on the server.&amp;nbsp;Read the blogpost about
&lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;. You can even&amp;nbsp;&lt;a href="http://jaystack.com/ppc/go_serverside"&gt;try it now&lt;/a&gt;&amp;nbsp;online and get your free app at JayStack.com.&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Scripts to reference&lt;/h3&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&amp;lt;!-- optional, only if you need OData --&amp;gt;
&amp;lt;script  type=&lt;span style="color:#a31515"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; src=&lt;span style="color:#a31515"&gt;&amp;quot;http://include.jaydata.org/datajs-1.0.3.min.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script  type=&lt;span style="color:#a31515"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; src=&lt;span style="color:#a31515"&gt;&amp;quot;http://include.jaydata.org/jaydata.min.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;OData&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;pre&gt;&lt;span&gt;var&lt;/span&gt; todoDB = &lt;span&gt;new&lt;/span&gt; TodoDatabase(&amp;quot;http://mysite.com/my.svc&amp;quot;);&lt;/pre&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h4&gt;local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Thu, 20 Dec 2012 11:21:43 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121220112143A</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=72</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;New: use JayData as a server&lt;/h2&gt;
&lt;p&gt;Use your JayData skills to create data centric business apps that run on the server.&amp;nbsp;Read the blogpost about
&lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;. You can even&amp;nbsp;&lt;a href="http://jaystack.com/ppc/go_serverside"&gt;try it now&lt;/a&gt;&amp;nbsp;online and get your free app at JayStack.com.&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Scripts to reference&lt;/h3&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&amp;lt;!-- optional, only if you need OData --&amp;gt;
&amp;lt;script  type=&lt;span style="color:#a31515"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; src=&lt;span style="color:#a31515"&gt;&amp;quot;http://include.jaydata.org/datajs-1.0.3.min.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script  type=&lt;span style="color:#a31515"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; src=&lt;span style="color:#a31515"&gt;&amp;quot;http://include.jaydata.org/jaydata.min.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;OData&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;pre&gt;&lt;span&gt;var&lt;/span&gt; todoDB = &lt;span&gt;new&lt;/span&gt; TodoDatabase(&amp;quot;http://mysite.com/my.svc&amp;quot;);&lt;/pre&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h4&gt;local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Thu, 29 Nov 2012 18:18:34 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121129061834P</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=71</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;New: use JayData as a server&lt;/h2&gt;
&lt;p&gt;Use your JayData skills to create data centric business apps that run on the server.&amp;nbsp;Read the blogpost about
&lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;. You can even&amp;nbsp;&lt;a href="http://jaystack.com/"&gt;try it now&lt;/a&gt;&amp;nbsp;online and get your free app at JayStack.com.&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Scripts to reference&lt;/h3&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&amp;lt;!-- optional, only if you need OData --&amp;gt;
&amp;lt;script  type=&lt;span style="color:#a31515"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; src=&lt;span style="color:#a31515"&gt;&amp;quot;http://include.jaydata.org/datajs-1.0.3.min.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script  type=&lt;span style="color:#a31515"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; src=&lt;span style="color:#a31515"&gt;&amp;quot;http://include.jaydata.org/jaydata.min.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;OData&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;pre&gt;&lt;span&gt;var&lt;/span&gt; todoDB = &lt;span&gt;new&lt;/span&gt; TodoDatabase(&amp;quot;http://mysite.com/my.svc&amp;quot;);&lt;/pre&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h4&gt;local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Thu, 29 Nov 2012 18:16:19 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121129061619P</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=70</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;New: use JayData as a server&lt;/h2&gt;
&lt;p&gt;Use your JayData skills to create data centric business apps that run on the server.&amp;nbsp;Read the blogpost about
&lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;. You can even&amp;nbsp;&lt;a href="http://jaystack.com/"&gt;try it now&lt;/a&gt;&amp;nbsp;online and get your free app at JayStack.com.&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Scripts to reference&lt;/h3&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&amp;lt;!-- optional, only if you need OData --&amp;gt;
&amp;lt;script  type=&lt;span style="color:#a31515"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; src=&lt;span style="color:#a31515"&gt;&amp;quot;http://include.jaydata.org/datajs-1.0.3.min.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script  type=&lt;span style="color:#a31515"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; src=&lt;span style="color:#a31515"&gt;&amp;quot;http://include.jaydata.org/jaydata.min.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;Local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Thu, 29 Nov 2012 18:13:51 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121129061351P</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=69</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;New: use JayData as a server&lt;/h2&gt;
&lt;p&gt;Use your JayData skills to create data centric business apps that run on the server.&amp;nbsp;Read the blogpost about
&lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;. You can even&amp;nbsp;&lt;a href="http://jaystack.com/"&gt;try it now&lt;/a&gt;&amp;nbsp;online and get your free app at JayStack.com.&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Scripts to reference&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&amp;lt;script type=&lt;span style="color:#a31515"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; src=&lt;span style="color:#a31515"&gt;&amp;quot;http://code.jquery.com/jquery.min.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script  type=&lt;span style="color:#a31515"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; src=&lt;span style="color:#a31515"&gt;&amp;quot;http://include.jaydata.org/datajs-1.0.3.min.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script  type=&lt;span style="color:#a31515"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; src=&lt;span style="color:#a31515"&gt;&amp;quot;http://include.jaydata.org/jaydata.min.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;Local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Thu, 29 Nov 2012 18:12:41 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121129061241P</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=68</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;New: use JayData as a server&lt;/h2&gt;
&lt;p&gt;Use your JayData skills to create data centric business apps that run on the server.&amp;nbsp;Read the blogpost about
&lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;. You can even&amp;nbsp;&lt;a href="http://jaystack.com/"&gt;try it now&lt;/a&gt;&amp;nbsp;online and get your free app at JayStack.com.&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Initialize resources&lt;/h3&gt;
&lt;p&gt;Initialize your resource like stylesheets, scripts and so on.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&amp;lt;script type=&lt;span style="color:#a31515"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; src=&lt;span style="color:#a31515"&gt;&amp;quot;http://code.jquery.com/jquery.min.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script  type=&lt;span style="color:#a31515"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; src=&lt;span style="color:#a31515"&gt;&amp;quot;http://include.jaydata.org/datajs-1.0.3.min.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script  type=&lt;span style="color:#a31515"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; src=&lt;span style="color:#a31515"&gt;&amp;quot;http://include.jaydata.org/jaydata.min.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;Local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Wed, 28 Nov 2012 15:36:06 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121128033606P</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=67</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;New: use JayData as a server&lt;/h2&gt;
&lt;p&gt;Use your JayData skills to create data centric business apps that run on the server.&amp;nbsp;Read the blogpost about
&lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;. You can even&amp;nbsp;&lt;a href="http://jaystack.com/"&gt;try it now&lt;/a&gt;&amp;nbsp;online and get your free app at JayStack.com.&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Initialize resources&lt;/h3&gt;
&lt;p&gt;Initialize your resource like stylesheets, scripts and so on.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://code.jquery.com/jquery.min.js&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;  &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/datajs-1.0.3.min.js&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;  &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/jaydata.min.js&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;Local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Wed, 28 Nov 2012 15:34:41 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121128033441P</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=66</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;New: use JayData as a server&lt;/h2&gt;
&lt;p&gt;Use your JayData skills to create data centric business apps that run on the server.&amp;nbsp;Read the blogpost about
&lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;. You can even&amp;nbsp;&lt;a href="http://jaystack.com/"&gt;try it now&lt;/a&gt;&amp;nbsp;online and get your free app at JayStack.com.&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Initialize resources&lt;/h3&gt;
&lt;p&gt;Initialize your resource like stylesheets, scripts and so on.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://code.jquery.com/jquery.min.js&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/datajs-1.0.3.min.js&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/jaydata.min.js&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;Local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Wed, 28 Nov 2012 15:31:03 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121128033103P</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=65</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;New: use JayData as a server&lt;/h2&gt;
&lt;p&gt;Use your JayData skills to create data centric business apps that run on the server.&amp;nbsp;Read the blogpost about
&lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;. You can even&amp;nbsp;&lt;a href="http://jaystack.com/"&gt;try it now&lt;/a&gt;&amp;nbsp;online and get your free app at JayStack.com.&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Initialize resources&lt;/h3&gt;
&lt;p&gt;Initialize your resource like stylesheets, scripts and so on.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://code.jquery.com/jquery.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/datajs-1.0.3.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/jaydata.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/jaystorm-1.0.0.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;Local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Wed, 28 Nov 2012 15:21:57 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121128032157P</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=64</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;New: use JayData as a server&lt;/h2&gt;
&lt;p&gt;Use your JayData skills to create data centric business apps that run on the server.&amp;nbsp;Read the blogpost about
&lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;. You can even&amp;nbsp;&lt;a href="http://jaystack.com/"&gt;try it now&lt;/a&gt;&amp;nbsp;online and get your free app at JayStack.com.&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Initialize resources&lt;/h3&gt;
&lt;p&gt;Initialize your resource like stylesheets, scripts and so on.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://code.jquery.com/jquery.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/datajs-1.0.3.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/jaydata.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/jaystorm-1.0.0.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;Local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Mon, 26 Nov 2012 16:32:04 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121126043204P</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=63</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;New: use JayData as a server&lt;/h2&gt;
&lt;p&gt;Use your JayData skills to create data centric business apps that run on the server.&amp;nbsp;Read the blogpost about
&lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;. You can even&amp;nbsp;&lt;a href="http://jaystack.com/"&gt;try it now&lt;/a&gt;&amp;nbsp;online and get your free app at JayStack.com.&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Initialize resources&lt;/h3&gt;
&lt;p&gt;Initialize your resource like stylesheets, scripts and so on.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://code.jquery.com/jquery.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/datajs-1.0.3.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/jaydata.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/jaystorm-1.0.0.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;Local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;br&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });

&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Mon, 26 Nov 2012 16:30:27 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121126043027P</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=62</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;New: use JayData as a server&lt;/h2&gt;
&lt;p&gt;Use your JayData skills to create data centric business apps that run on the server.&amp;nbsp;Read the blogpost about
&lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;. You can even&amp;nbsp;&lt;a href="http://jaystack.com/"&gt;try it now&lt;/a&gt;&amp;nbsp;online and get your free app at JayStack.com.&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Initialize resources&lt;/h3&gt;
&lt;p&gt;Initialize your resource like stylesheets, scripts and so on.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://code.jquery.com/jquery.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/datajs-1.0.3.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/jaydata.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/jaystorm-1.0.0.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;Local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;br&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });

&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt; &lt;br&gt; JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework  and LINQ on server-side to perform operations on data from different databases. &lt;br&gt; &lt;br&gt; The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt; &lt;br&gt; JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on &lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt; cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; 
&lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; 
&lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; 
&lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt; 
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. 
&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData &lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt; 
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt; 
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt; &lt;br&gt; As JayData covers many technologies and open new fields of development, we encourage you to &lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here: &lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt; &lt;br&gt; JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit &lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt; &lt;br&gt; JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Mon, 26 Nov 2012 16:30:05 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121126043005P</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=61</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;New: use JayData as a server&lt;/h2&gt;
&lt;p&gt;Use your JayData skills to create data centric business apps that run on the server.&amp;nbsp;Read the blogpost about
&lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;. You can even&amp;nbsp;&lt;a href="http://jaystack.com/"&gt;try it now&lt;/a&gt;&amp;nbsp;online and get your free app at JayStack.com.&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Initialize resources&lt;/h3&gt;
&lt;p&gt;Initialize your resource like stylesheets, scripts and so on.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://code.jquery.com/jquery.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/datajs-1.0.3.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/jaydata.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/jaystorm-1.0.0.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;Local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;br&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });

&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Mon, 26 Nov 2012 16:24:50 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121126042450P</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=60</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;New: use JayData as a server&lt;/h2&gt;
&lt;p&gt;Use your JayData skills to create data centric business apps that run on the server.&amp;nbsp;Read the blogpost about
&lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;. &lt;a href="http://jaystack.com/"&gt;
Try it now&lt;/a&gt;&amp;nbsp;online and get your free app at JayStack.com.&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Initialize resources&lt;/h3&gt;
&lt;p&gt;Initialize your resource like stylesheets, scripts and so on.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://code.jquery.com/jquery.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/datajs-1.0.3.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/jaydata.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/jaystorm-1.0.0.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;Local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;br&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });

&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Mon, 26 Nov 2012 16:23:14 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121126042314P</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=59</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;New: use JayData as a server&lt;/h2&gt;
&lt;p&gt;Use your JayData skills to create data centric business apps that run on the server.&amp;nbsp;Read the blogpost about
&lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;. &lt;a href="http://jaystack.com/"&gt;
Try it now&lt;/a&gt;&amp;nbsp;online and get your free app at JayStack.com.&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Initialize resources&lt;/h3&gt;
&lt;p&gt;Initialize your resource like stylesheets, scripts and so on.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://code.jquery.com/jquery.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/datajs-1.0.3.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/jaydata.min.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt; &lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;http://include.jaydata.org/jaystorm-1.0.0.js&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;Local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;br&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });

&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Mon, 26 Nov 2012 16:22:30 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121126042230P</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=58</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;New: use JayData as a server&lt;/h2&gt;
&lt;p&gt;Use your JayData skills to create data centric business apps that run on the server.&amp;nbsp;Read the blogpost about
&lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;. &lt;a href="http://jaystack.com/"&gt;
Try it now&lt;/a&gt;&amp;nbsp;online and get your free app at JayStack.com.&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Initialize resources&lt;/h3&gt;
&lt;p&gt;Initialize your resource like stylesheets, scripts and so on.&lt;/p&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;Local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;br&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });

&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Mon, 26 Nov 2012 16:20:46 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121126042046P</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=57</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;JayData on serverside&lt;/h2&gt;
&lt;p&gt;JayData can be used on serverside. Read the blogpost about &lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;. Use your JayData skills to create data centric business apps that run on the server.
&lt;a href="http://jaystack.com/"&gt;Try it now&lt;/a&gt; and get your free app!&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Initialize resources&lt;/h3&gt;
&lt;p&gt;Initialize your resource like stylesheets, scripts and so on.&lt;/p&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;Local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;br&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });

&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Mon, 26 Nov 2012 15:51:55 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121126035155P</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=56</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;JayData on serverside&lt;/h2&gt;
&lt;p&gt;JayData can be used on serverside. Read the blogpost about &lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;. Use your JayData skills to create data centric business apps that run on the server.
&lt;a href="http://jaystack.com/"&gt;Register now&lt;/a&gt;and get your free app!&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Initialize resources&lt;/h3&gt;
&lt;p&gt;Initialize your resource like stylesheets, scripts and so on.&lt;/p&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;Local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;br&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });

&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Mon, 26 Nov 2012 15:50:47 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121126035047P</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=55</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
, or read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;JayData on serverside&lt;/h2&gt;
&lt;p&gt;JayData can be used on serverside. Read the blogpost about &lt;a href="http://jaydata.org/blog/install-your-own-odata-server-with-nodejs-and-mongodb"&gt;
How to install your own oData server with nodejs and mongoDB&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Use your JayData skills to create data centric business apps that run on the server.
&lt;a href="http://jaystack.com/"&gt;Register now&lt;/a&gt;and get your free app!&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Initialize resources&lt;/h3&gt;
&lt;p&gt;Initialize your resource like stylesheets, scripts and so on.&lt;/p&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;Local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;br&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });

&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h3&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Mon, 26 Nov 2012 15:49:40 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121126034940P</guid></item><item><title>Updated Wiki: Home</title><link>http://jaydata.codeplex.com/wikipage?version=54</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;a href="http://www.jaystack.com"&gt;&lt;img src="http://jaydata.org//Media/Default/images/jaystack_promo3.png" alt="" width="224" height="175" style="float:right; border:10px solid black"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;About JayData Project&lt;/h1&gt;
&lt;p&gt;JayData is a unified data access library for JavaScript to CRUD data from different sources like
&lt;strong&gt;WebSQL&lt;/strong&gt;, &lt;strong&gt;IndexedDB&lt;/strong&gt;, &lt;strong&gt;MongoDb&lt;/strong&gt;, &lt;strong&gt;
OData&lt;/strong&gt;, &lt;strong&gt;HTML5 localStorage&lt;/strong&gt;, &lt;strong&gt;Facebook &lt;/strong&gt;or
&lt;strong&gt;YQL&lt;/strong&gt;. The library can be integrated with &lt;strong&gt;Knockout.js, Handlebars.js&amp;nbsp;&lt;/strong&gt;or
&lt;strong&gt;Sencha Touch 2&lt;/strong&gt; and can be used on &lt;strong&gt;Node.js&lt;/strong&gt; as well.&lt;/p&gt;
&lt;h4&gt;CRUD &amp;#43; Query in Javascript !!&lt;/h4&gt;
&lt;p&gt;Create or modify data with an approach native to JavaScript: create objects, set properties, assign to collections. Create complex inmemory object graphs and let JayData persist it for you to one of the read/write data sources.&lt;br&gt;
&lt;br&gt;
JayData provides &lt;strong&gt;JavaScript Language Query (JSLQ)&lt;/strong&gt; as a tool to query local (in-browser and mobile) and remote data sources witha simple, unified query syntax: JavaScript itself. Much like Microsoft .NET developers can utilize Entity Framework
 and LINQ on server-side to perform operations on data from different databases. &lt;br&gt;
&lt;br&gt;
The aim of JayData library is to give a similar level of abstraction with the help of the $data.Expressions API and the JavaScript language itself.&lt;br&gt;
&lt;br&gt;
JayData is &lt;strong&gt;cross-platform&lt;/strong&gt; (runs on &lt;strong&gt;HTML5&lt;/strong&gt; desktop and mobile browsers, can be hosted in PhoneGap environment on
&lt;strong&gt;iPhone&lt;/strong&gt;, &lt;strong&gt;iPad&lt;/strong&gt; and &lt;strong&gt;Android&lt;/strong&gt;) and &lt;strong&gt;
cross-layer&lt;/strong&gt; as it works on client-side and server-side (&lt;strong&gt;Node.JS&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;Please visit our website at &lt;a href="http://jaydata.org"&gt;http://jaydata.org &lt;/a&gt;
for the most current information about this project.&lt;/p&gt;
&lt;h2&gt;Do you like the way JayData works?&lt;/h2&gt;
&lt;p&gt;Use your JayData skills to create data centric business apps that run on the server. Build a
&lt;strong&gt;server side &lt;/strong&gt;application with JayData and JayStorm. &lt;a href="http://jaystack.com/products/overview"&gt;
Register now &lt;/a&gt;for your free app!&lt;/p&gt;
&lt;h3&gt;More information about JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Walk through the &lt;a href="http://jaydata.org/documentation"&gt;tutorial&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Watch &lt;a href="http://www.youtube.com/jaydataorg"&gt;videos&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Try it out in the &lt;a href="http://jslq.spirit.de/"&gt;Playground&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Check out the &lt;a href="http://jaydata.org/examples/index.html"&gt;sample apps.&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Ask questions and get answers from &lt;a href="jaydata.org/forum"&gt;Forum&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Join our community, Like us on Facebook and Follow us on Twitter.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Facebook: &lt;a href="http://www.facebook.com/JayData"&gt;http://www.facebook.com/JayData
&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/jaydataorg"&gt;https://twitter.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;YouTube: &lt;a href="http://www.youtube.com/jaydataorg"&gt;http://www.youtube.com/jaydataorg&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Key providers of JayData&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;WebSQL &lt;/li&gt;&lt;li&gt;SQLite &lt;/li&gt;&lt;li&gt;MongoDB &lt;/li&gt;&lt;li&gt;IndexedDB &lt;/li&gt;&lt;li&gt;HTML5 localStorage &lt;/li&gt;&lt;li&gt;OData &lt;/li&gt;&lt;li&gt;Facebook &lt;/li&gt;&lt;li&gt;YQL &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Please read the &lt;a href="http://jaydata.org/blog/release-notes"&gt;release notes&lt;/a&gt; for current status of the providers.&lt;/p&gt;
&lt;h2&gt;Understand JayData in 7 simple steps. &lt;a href="http://jaydata.org/blog/understand_Jaydata_in_seven_simple_steps"&gt;
(read this article)&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Step 1 - Initialize resources&lt;/h3&gt;
&lt;p&gt;Initialize your resource like stylesheets, scripts and so on.&lt;/p&gt;
&lt;h3&gt;Step 2 - Define data model&lt;/h3&gt;
&lt;div&gt;
&lt;p&gt;Simple model that works online and offline as well. Define your data model:&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;$data.Entity.extend(&lt;span style="color:#a31515"&gt;&amp;quot;Todo&amp;quot;&lt;/span&gt;, {
    Id: { type: &lt;span style="color:#a31515"&gt;&amp;quot;int&amp;quot;&lt;/span&gt;, key: &lt;span style="color:blue"&gt;true&lt;/span&gt;, computed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    Task: { type: String, required: &lt;span style="color:blue"&gt;true&lt;/span&gt;, maxLength: 200 },
    DueDate: { type: Date },
    Completed: { type: Boolean }
});

$data.EntityContext.extend(&lt;span style="color:#a31515"&gt;&amp;quot;TodoDatabase&amp;quot;&lt;/span&gt;, {
    Todos: { type: $data.EntitySet, elementType: Todo }
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 3 - Initialize the data storage&lt;/h3&gt;
&lt;div&gt;
&lt;h4&gt;Local&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase(&lt;span style="color:#a31515"&gt;&amp;quot;MyTodoDatase&amp;quot;&lt;/span&gt;);
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;webSQL&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; todoDB = &lt;span style="color:blue"&gt;new&lt;/span&gt; TodoDatabase({ 
    provider: &lt;span style="color:#a31515"&gt;'webSql'&lt;/span&gt;, databaseName: &lt;span style="color:#a31515"&gt;'MyTodoDatabase'&lt;/span&gt; 
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 4 - Create data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Create&lt;/span&gt;
&lt;span style="color:blue"&gt;var&lt;/span&gt; tasks = todoDB.Todos.addMany([
    { Task: &lt;span style="color:#a31515"&gt;'Step0: Get this this list'&lt;/span&gt;, Completed: &lt;span style="color:blue"&gt;true&lt;/span&gt; },
    { Task: &lt;span style="color:#a31515"&gt;'Step1: Define your data model'&lt;/span&gt;},
    { Task: &lt;span style="color:#a31515"&gt;'Step2: Initialize data storage'&lt;/span&gt;}
]);
todoDB.saveChanges(&lt;span style="color:blue"&gt;function&lt;/span&gt;() {
    tasks.forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) { alert(task.Id) });
});
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 5 - Working with data&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #1&lt;/h4&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #1&lt;/span&gt;
todoDB.Todos
        .filter( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            &lt;span style="color:blue"&gt;return&lt;/span&gt; todo.Completed == &lt;span style="color:blue"&gt;true&lt;/span&gt; ||
                    todo.Task.startsWith(&lt;span style="color:#a31515"&gt;&amp;quot;Step2&amp;quot;&lt;/span&gt;)
        })
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h4&gt;Filter #2&lt;/h4&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Filter #2&lt;/span&gt;
todoDB.Todos
        .filter(&lt;span style="color:#a31515"&gt;&amp;quot;it.Completed || it.task.startsWith('Step2')&amp;quot;&lt;/span&gt;)
        .forEach( &lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            yourTemplate.render(todo); 
        });
&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 6 - Remove&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//Simple remove&lt;/span&gt;
todoDB.Todos.remove(todo);
todoDB.saveChanges();&lt;/pre&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;//Remove in batch&lt;/span&gt;
todoDB.Todos
        .removeAll();
&lt;/pre&gt;
&lt;/div&gt;
&lt;br&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Step 7 - Generate some UI with jQuery&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;&lt;span style="color:green"&gt;//UI with jQuery&lt;/span&gt;
todoDB.Todos
        .include(&lt;span style="color:#a31515"&gt;&amp;quot;Person&amp;quot;&lt;/span&gt;)
        .forEach(&lt;span style="color:blue"&gt;function&lt;/span&gt;(todo) {
            $(&lt;span style="color:#a31515"&gt;'#todos'&lt;/span&gt;)
                .append(&lt;span style="color:#a31515"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt; &amp;#43; todo.Task &amp;#43; &lt;span style="color:#a31515"&gt;','&lt;/span&gt; &amp;#43; todo.Person.Name &amp;#43; &lt;span style="color:#a31515"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;);
        });

&lt;/pre&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Visit &lt;a href="http://jaydata.org"&gt;http://jaydata.org&lt;/a&gt; for detailed information and documentation.&lt;br&gt;
&lt;br&gt;
As JayData covers many technologies and open new fields of development, we encourage you to
&lt;strong&gt;contribute&lt;/strong&gt; to the project with new providers or features. Check out the possible ways of contributions here:
&lt;a href="http://jaydata.org/community/contribute"&gt;http://jaydata.org/community/contribute&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JavaScript libraries released on CodePlex can be used to develop applications, to get the structured sourcecode to develop JayData itself, visit
&lt;a href="http://github.com/jaydata"&gt;github.com/jaydata&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
JayData comes with dual licensing: you can use it under MIT license if ship software software under MIT, but it should be used under GPL if you distribute your software under GPLv2.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>JayDataOrg</author><pubDate>Mon, 26 Nov 2012 15:05:10 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20121126030510P</guid></item></channel></rss>