summaryrefslogtreecommitdiff
path: root/js/dojo/dojox/app/main.js
diff options
context:
space:
mode:
authorTristan Zur <tzur@web.web.ccwn.org>2014-03-27 22:27:47 +0100
committerTristan Zur <tzur@web.web.ccwn.org>2014-03-27 22:27:47 +0100
commitb62676ca5d3d6f6ba3f019ea3f99722e165a98d8 (patch)
tree86722cb80f07d4569f90088eeaea2fc2f6e2ef94 /js/dojo/dojox/app/main.js
Initial commit of intern.ccwn.org contentsHEADmaster
Diffstat (limited to 'js/dojo/dojox/app/main.js')
-rw-r--r--js/dojo/dojox/app/main.js116
1 files changed, 116 insertions, 0 deletions
diff --git a/js/dojo/dojox/app/main.js b/js/dojo/dojox/app/main.js
new file mode 100644
index 0000000..66c9414
--- /dev/null
+++ b/js/dojo/dojox/app/main.js
@@ -0,0 +1,116 @@
+//>>built
+define("dojox/app/main", ["dojo/_base/kernel",
+ "dojo/_base/lang",
+ "dojo/_base/declare",
+ "dojo/_base/Deferred",
+ "dojo/_base/connect",
+ "dojo/ready",
+ "dojo/_base/window",
+ "dojo/dom-construct",
+ "./scene"],
+ function(dojo, lang, declare, deferred, connect, ready, baseWindow, dom, sceneCtor){
+
+ dojo.experimental("dojox.app");
+ var Application = declare([sceneCtor], {
+ constructor: function(params){
+ this.scenes={};
+ if(params.stores){
+ //create stores in the configuration.
+ for (var item in params.stores){
+ if(item.charAt(0)!=="_"){//skip the private properties
+ var type = params.stores[item].type? params.stores[item].type : "dojo.store.Memory";
+ var config = {};
+ if(params.stores[item].params){
+ dojo.mixin(config, params.stores[item].params);
+ }
+ var storeCtor = dojo.getObject(type);
+ if(config.data && lang.isString(config.data)){
+ //get the object specified by string value of data property
+ //cannot assign object literal or reference to data property
+ //because json.ref will generate __parent to point to its parent
+ //and will cause infinitive loop when creating StatefulModel.
+ config.data = dojo.getObject(config.data);
+ }
+ params.stores[item].store = new storeCtor(config);
+ }
+ }
+ }
+
+ },
+
+ // load default view and startup the default view
+ start: function(applicaton){
+ var child = this.loadChild();
+
+ deferred.when(child, dojo.hitch(this, function(){
+ this.startup();
+
+ //set application status to STARTED
+ this.setStatus(this.lifecycle.STARTED);
+ }));
+ },
+ templateString: "<div></div>",
+ selectedChild: null,
+ baseClass: "application mblView",
+ defaultViewType: sceneCtor,
+ buildRendering: function(){
+ if (this.srcNodeRef===baseWindow.body()){
+ this.srcNodeRef = dom.create("DIV",{},baseWindow.body());
+ }
+ this.inherited(arguments);
+ }
+ });
+
+ function generateApp(config,node,appSchema,validate){
+
+ //console.log("config.modules: ", config.modules);
+ var modules = config.modules.concat(config.dependencies);
+
+ if (config.template){
+ //console.log("config.template: ", config.template);
+ modules.push("dojo/text!" + "app/" + config.template);
+ }
+ //console.log("modules: ", modules);
+
+ require(modules, function(){
+ var modules=[Application];
+ for(var i=0;i<config.modules.length;i++){
+ modules.push(arguments[i]);
+ }
+
+ if (config.template){
+ var ext = {
+ templateString: arguments[arguments.length-1]
+ }
+ }
+ App = declare(modules,ext);
+
+ ready(function(){
+ app = App(config,node || baseWindow.body());
+ app.setStatus(app.lifecycle.STARTING);
+ app.start();
+ });
+ });
+ }
+
+
+ return function(config,node){
+ if (!config){
+ throw Error("App Config Missing");
+ }
+
+
+ if (config.validate){
+ require(["dojox/json/schema","dojox/json/ref","dojo/text!dojox/application/schema/application.json"],function(schema,appSchema){
+ schema = dojox.json.ref.resolveJson(schema);
+ if (schema.validate(config,appSchema)){
+ generateApp(config,node);
+ }
+ });
+
+
+ }else{
+ generateApp(config,node);
+ }
+ }
+});