aboutsummaryrefslogtreecommitdiff
path: root/js/mediators
diff options
context:
space:
mode:
authorJose Antonio Marquez2012-02-24 14:51:29 -0800
committerJose Antonio Marquez2012-02-24 14:51:29 -0800
commit9a87513929290b6f84a090b4b4cca8fab0f2ab81 (patch)
treef25f7ad305e1db6fa96ae085859c62c317208249 /js/mediators
parent97d6314f96f309332a655d49b95ec651c378bcf2 (diff)
downloadninja-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.js47
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 }