// // TODO Figure out how to initialize w/ static views from server (don't call .load but instead inject in django as strings) // so this only loads the lazily loaded ones. (function() { if (typeof window.templateLoader == 'function') return; var templateLoader = { templateVersion: "0.0.15", templates: {}, loadRemoteTemplate: function(templateName, filename, callback) { if (!this.templates[templateName]) { var self = this; jQuery.ajax({url : filename, success : function(data) { self.addTemplate(templateName, data); self.saveLocalTemplates(); callback(data); }, error : function(xhdr, textStatus, errorThrown) { console.log(textStatus); }, dataType : "html" }) } else { callback(this.templates[templateName]); } }, addTemplate: function(templateName, data) { // is there a reason this doesn't go ahead and compile the template? _.template(data) // I suppose localstorage use would still req raw string rather than compiled version, but that sd work // if it maintains a separate cache of uncompiled ones this.templates[templateName] = data; }, localStorageAvailable: function() { try { // window.cachetemplates is global set in base.js to turn caching on/off return window.cachetemplates && 'localStorage' in window && window['localStorage'] !== null; } catch (e) { return false; } }, saveLocalTemplates: function() { if (this.localStorageAvailable) { localStorage.setItem("templates", JSON.stringify(this.templates)); localStorage.setItem("templateVersion", this.templateVersion); } }, loadLocalTemplates: function() { if (this.localStorageAvailable) { var templateVersion = localStorage.getItem("templateVersion"); if (templateVersion && templateVersion == this.templateVersion) { var templates = localStorage.getItem("templates"); if (templates) { templates = JSON.parse(templates); for (var x in templates) { if (!this.templates[x]) { this.addTemplate(x, templates[x]); } } } } else { localStorage.removeItem("templates"); localStorage.removeItem("templateVersion"); } } } }; templateLoader.loadLocalTemplates(); window.templateLoader = templateLoader; })();