aboutsummaryrefslogtreecommitdiff
path: root/src/moduleLoader.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/moduleLoader.js')
-rw-r--r--src/moduleLoader.js67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/moduleLoader.js b/src/moduleLoader.js
new file mode 100644
index 0000000..7fac5fe
--- /dev/null
+++ b/src/moduleLoader.js
@@ -0,0 +1,67 @@
+define(['nunjucks', 'config', 'jqueryui'], function(nunjucks, CONFIG) {
+
+ var MODULE_LOADER = {
+ load: function(moduleName, title) {
+
+ var module = CONFIG.module[moduleName];
+
+
+ if (CONFIG.module[moduleName]["template"]) {
+ require(['text!' + CONFIG.module[moduleName]["template"]], function(template) {
+ var compiledTemplate = nunjucks.renderString(template, { title: title });
+
+ if (module.childView) {
+ if (!$(module.childView.mainView).length) {
+ $(CONFIG.renderArea).html('');
+ require(['text!' + module.childView.template], function(childTemplate) {
+ var compiledChildTemplate = nunjucks.renderString(childTemplate, { title: title });
+ $(compiledChildTemplate).appendTo(CONFIG.renderArea);
+ $(compiledTemplate).appendTo(CONFIG.renderArea);
+ });
+
+ } else {
+ $(CONFIG.renderArea).children(":not(" + module.childView.mainView + ")").remove();
+ $(compiledTemplate).appendTo(CONFIG.renderArea);
+ }
+
+ } else {
+ $(CONFIG.renderArea).html('');
+ $(compiledTemplate).appendTo(CONFIG.renderArea);
+ }
+
+
+ if (module.scripts.length > 0) {
+ if (module.main) {
+ require.undef(module.main);
+ require([module.main], function(module_obj) {
+ console.log(module_obj)
+ module_obj.init();
+ })
+ }
+ require(module.scripts);
+ }
+
+ if (CONFIG.common && !module.rejectcommon) {
+ require.undef(CONFIG.common[0]);
+ require(CONFIG.common, function(common) {
+ common.init();
+ });
+ }
+
+ });
+
+ }
+
+ if (title) {
+ setTimeout(function(){
+ document.title = CONFIG.appName + " - " + title;
+ })
+
+ }
+
+ }
+ }
+
+ return MODULE_LOADER;
+
+});