d8b30b73318a21571d4ae068e7a95db70fc813cb
[fnpeditor.git] / modules / visualEditor.js
1 rng.modules.visualEditor = function(sandbox) {\r
2     var transformations = rng.modules.visualEditor.transformations;\r
3 \r
4     var view = {\r
5         node: $(sandbox.getTemplate('main')()),\r
6         getMetaData: function() {\r
7             var toret = {};\r
8             this.node.find('#rng-visualEditor-meta table tr').each(function() {\r
9                 var tr = $(this);\r
10                 var key = $(tr.find('td')[0]).html();\r
11                 var value = $(tr.find('td input')[0]).val();\r
12                 toret[key] = value;\r
13             });\r
14             console.log(toret);\r
15             return toret;\r
16         },\r
17         setMetaData: function(metadata) {\r
18             var table = this.node.find('#rng-visualEditor-meta table');\r
19             table.empty();\r
20             _.each(_.keys(metadata), function(key) {    \r
21                 $(sandbox.getTemplate('metaItem')({key: key, value: metadata[key]})).appendTo(table);\r
22             });\r
23         },\r
24         setBody: function(HTMLTree) {\r
25             this.node.find('#rng-visualEditor-content').html(HTMLTree);\r
26         },\r
27         getBody: function() {\r
28             return this.find('#rng-visualEditor-content').html();\r
29         }   \r
30     };\r
31     \r
32     var isDirty = false;\r
33     \r
34     \r
35     $('#rng-visualEditor-content', view).on('keyup', function() {\r
36         isDirty = true;\r
37     });\r
38     \r
39     $('#rng-visualEditor-meta', view).on('keyup', function() {\r
40         isDirty = true;\r
41     });\r
42     \r
43     return {\r
44         start: function() {\r
45             sandbox.publish('ready');\r
46         },\r
47         getView: function() {\r
48             return view.node;\r
49         },\r
50         setDocument: function(xml) {\r
51             var transformed = transformations.fromXML.getDocumentDescription(xml);\r
52             view.setBody(transformed.HTMLTree);\r
53             view.setMetaData(transformed.metadata);\r
54             isDirty = false;\r
55         },\r
56         getDocument: function() {\r
57             return transformations.toXML.getXML({HTMLTree: view.getBody(), metadata: view.getMetaData()});\r
58         },\r
59         isDirty: function() {\r
60             return isDirty;\r
61         },\r
62         setDirty: function(dirty) {\r
63             isDirty = dirty;\r
64         }\r
65     \r
66     }\r
67 };