diff options
author | Jose Antonio Marquez | 2012-02-24 14:51:29 -0800 |
---|---|---|
committer | Jose Antonio Marquez | 2012-02-24 14:51:29 -0800 |
commit | 9a87513929290b6f84a090b4b4cca8fab0f2ab81 (patch) | |
tree | f25f7ad305e1db6fa96ae085859c62c317208249 /js/mediators | |
parent | 97d6314f96f309332a655d49b95ec651c378bcf2 (diff) | |
download | ninja-9a87513929290b6f84a090b4b4cca8fab0f2ab81.tar.gz |
Added import/export of RDGE data
This is only the IO aspect, the data getter seems broken for 2D canvas and does not allow for save, and nothing works for setting the data on load. However, the IO aspect of saving and opening the data are not incorporated.
Diffstat (limited to 'js/mediators')
-rw-r--r-- | js/mediators/io-mediator.js | 47 |
1 files changed, 42 insertions, 5 deletions
diff --git a/js/mediators/io-mediator.js b/js/mediators/io-mediator.js index c4f3b361..e5eb1fc6 100644 --- a/js/mediators/io-mediator.js +++ b/js/mediators/io-mediator.js | |||
@@ -195,11 +195,10 @@ exports.IoMediator = Montage.create(Component, { | |||
195 | } | 195 | } |
196 | }, | 196 | }, |
197 | //////////////////////////////////////////////////////////////////// | 197 | //////////////////////////////////////////////////////////////////// |
198 | //TODO: Expand to allow more templates | 198 | //TODO: Expand to allow more templates, clean up variables |
199 | parseNinjaTemplateToHtml: { | 199 | parseNinjaTemplateToHtml: { |
200 | enumerable: false, | 200 | enumerable: false, |
201 | value: function (template) { | 201 | value: function (template) { |
202 | //TODO: Clean up variables | ||
203 | //Injecting head and body into old document | 202 | //Injecting head and body into old document |
204 | template.document.content.document.body.innerHTML = template.body; | 203 | template.document.content.document.body.innerHTML = template.body; |
205 | template.document.content.document.head.innerHTML = template.head; | 204 | template.document.content.document.head.innerHTML = template.head; |
@@ -210,7 +209,7 @@ exports.IoMediator = Montage.create(Component, { | |||
210 | //Looping through link tags and removing file recreated elements | 209 | //Looping through link tags and removing file recreated elements |
211 | for (var j in styletags) { | 210 | for (var j in styletags) { |
212 | if (styletags[j].getAttribute) { | 211 | if (styletags[j].getAttribute) { |
213 | if(styletags[j].getAttribute('ninjauri') !== null) { | 212 | if(styletags[j].getAttribute('ninjauri') !== null) {//TODO: Use querySelectorAll |
214 | try { | 213 | try { |
215 | //Checking head first | 214 | //Checking head first |
216 | template.document.content.document.head.removeChild(styletags[j]); | 215 | template.document.content.document.head.removeChild(styletags[j]); |
@@ -228,7 +227,7 @@ exports.IoMediator = Montage.create(Component, { | |||
228 | } | 227 | } |
229 | //TODO: Add logic to only enble tags we disabled | 228 | //TODO: Add logic to only enble tags we disabled |
230 | for (var l in linktags) { | 229 | for (var l in linktags) { |
231 | if (linktags[l].getAttribute && linktags[l].getAttribute('disabled')) { | 230 | if (linktags[l].getAttribute && linktags[l].getAttribute('disabled')) {//TODO: Use querySelectorAll |
232 | linktags[l].removeAttribute('disabled'); | 231 | linktags[l].removeAttribute('disabled'); |
233 | } | 232 | } |
234 | } | 233 | } |
@@ -259,7 +258,7 @@ exports.IoMediator = Montage.create(Component, { | |||
259 | for(var i in template.css) { | 258 | for(var i in template.css) { |
260 | if (template.css[i].ownerNode) { | 259 | if (template.css[i].ownerNode) { |
261 | if (template.css[i].ownerNode.getAttribute) { | 260 | if (template.css[i].ownerNode.getAttribute) { |
262 | if (template.css[i].ownerNode.getAttribute('ninjauri') === null) { | 261 | if (template.css[i].ownerNode.getAttribute('ninjauri') === null) {//TODO: Use querySelectorAll |
263 | //Inseting data from rules array into <style> as string | 262 | //Inseting data from rules array into <style> as string |
264 | docStyles[styleCounter].innerHTML = this.getCssFromRules(template.css[i].cssRules); | 263 | docStyles[styleCounter].innerHTML = this.getCssFromRules(template.css[i].cssRules); |
265 | styleCounter++; | 264 | styleCounter++; |
@@ -271,6 +270,44 @@ exports.IoMediator = Montage.create(Component, { | |||
271 | } | 270 | } |
272 | } | 271 | } |
273 | } | 272 | } |
273 | //Checking for webGL elements in document | ||
274 | if (template.webgl.length) { | ||
275 | // | ||
276 | var json, matchingtags = [], webgltag, scripts = template.document.content.document.getElementsByTagName('script'); | ||
277 | // | ||
278 | for (var i in scripts) { | ||
279 | if (scripts[i].getAttribute) { | ||
280 | if (scripts[i].getAttribute('data-ninja-webgl') !== null) {//TODO: Use querySelectorAll | ||
281 | matchingtags.push(scripts[i]); | ||
282 | } | ||
283 | } | ||
284 | } | ||
285 | // | ||
286 | if (matchingtags.length) { | ||
287 | if (matchingtags.length === 1) { | ||
288 | webgltag = matchingtags[0]; | ||
289 | } else { | ||
290 | //TODO: Add logic to handle multiple tags, perhaps combine to one | ||
291 | webgltag = matchingtags[matchingtags.length-1]; //Saving all data to last one... | ||
292 | } | ||
293 | } | ||
294 | // | ||
295 | if (!webgltag) { | ||
296 | webgltag = template.document.content.document.createElement('script'); | ||
297 | webgltag.setAttribute('data-ninja-webgl', 'true'); | ||
298 | template.document.content.document.head.appendChild(webgltag); | ||
299 | } | ||
300 | // | ||
301 | json = '\n\t\t({\n\t\t\t"version": "X.X.X.X",\n\t\t\t"data": ['; | ||
302 | // | ||
303 | for (var j=0; template.webgl[j]; j++) { | ||
304 | json += '\n\t\t\t\t"'+escape(template.webgl[j])+'"'; | ||
305 | } | ||
306 | // | ||
307 | json += ']\n\t\t})\n\t'; | ||
308 | // | ||
309 | webgltag.innerHTML = json; | ||
310 | } | ||
274 | // | 311 | // |
275 | return template.document.content.document.documentElement.outerHTML.replace(url, ''); | 312 | return template.document.content.document.documentElement.outerHTML.replace(url, ''); |
276 | } | 313 | } |