provide installation instructions
[extjs.git] / air / samples / tasks / js / Exporter.js
1 /*\r
2  * Ext JS Library 0.30\r
3  * Copyright(c) 2006-2009, Ext JS, LLC.\r
4  * licensing@extjs.com\r
5  * \r
6  * http://extjs.com/license\r
7  */\r
8 \r
9 tx.Exporter = function(){\r
10         var lists = tx.data.conn.query('select * from list');\r
11         \r
12         var doc = new runtime.flash.xml.XMLDocument();\r
13         \r
14         var root = doc.createElement('simple-tasks');\r
15         doc.appendChild(root);\r
16         \r
17         root.attributes['version'] = '2.0';\r
18         \r
19         for(var i = 0, len = lists.length; i < len; i++){\r
20                 var list = lists[i];\r
21                 \r
22                 var listNode = doc.createElement('list');\r
23                 root.appendChild(listNode);\r
24                 \r
25                 for(var k in list){\r
26                         if(list.hasOwnProperty(k)){\r
27                                 listNode.attributes[k] = String(list[k]);\r
28                         }\r
29                 }\r
30                 \r
31                 var tasks = tx.data.conn.queryBy('select * from task where listId = ?', [list.listId]);\r
32                 for(var j = 0, jlen = tasks.length; j < jlen; j++){\r
33                         var task = tasks[j];\r
34                         \r
35                         var taskNode = doc.createElement('task');\r
36                         listNode.appendChild(taskNode);\r
37                         \r
38                         for(var t in task){\r
39                                 if(task.hasOwnProperty(t)){\r
40                                         taskNode.attributes[t] = String(task[t]);\r
41                                 }\r
42                         }\r
43                 }\r
44         }\r
45         \r
46         var file = new air.File(air.File.documentsDirectory.nativePath + air.File.separator + 'tasks.xml');\r
47         \r
48         file.addEventListener('select', function(e){\r
49                 var target = e.target;\r
50                 var stream = new air.FileStream();\r
51         stream.open(target, air.FileMode.WRITE);\r
52                 stream.writeUTFBytes('<?xml version="1.0" encoding="UTF-8"?>');\r
53         stream.writeUTFBytes(doc.toString());\r
54         stream.close();\r
55         });\r
56         \r
57         // I wonder why no filter for Save As?\r
58         // var filter = new air.FileFilter("Tasks XML File", "*.xml");\r
59         file.browseForSave('Save As');\r
60 };\r